最小权限集:
计算MD5校验文件是否成功写入,是否有效/被替换
https://github.com/sqlmapproject/sqlmap
《黑客攻防技术宝典·实战篇》一书和雨笋教育实训。
在阅读这篇博客之前,我假定您对http协议和Linux系统的命令有一些基本的了解。
1.应用层协议
HTTP常用消息头
有些消息头是只能用于请求头,有些是可选的,这里只列出常用的且不加辨别。
Referer消息头:当前请求的的原始url,网站间跳转会填写。
Accept消息头:指定客户端接收哪些MIME类型。
Host消息头:出现在被访问的完整URL中的主机名称(http 1.1版本必须使用)
Cookie消息头:
Pragma消息头:指示浏览器不要将响应保存在缓存。
Expires消息头:指出消息内容的过期时间
Connection头:告诉对方完成HTTP传输后是关闭TCP连接还是开着
Transfer-Encoding:主体消息的编码形式
Origin:用于跨域Ajax中,指示提出请求的域
Location:在重定向响应中指定重定向的目标
Set-Cookie:用于向浏览器发布Cookie,浏览器会在随后请求中返回给服务器
X-Forwarded-For:RFC 7239标准,并排表示经过代理前的IP,可以用于IP伪造。
编码字符
url的编码替代:
%3d =
%25 %
%20 空格 (+也表示空格)
%0a 换行
%00 空字节
unicode编码以%u为前缀
html的编码替代
" “
&apos ‘
& &
< <
> >
同源策略
一个域中的页面可以向另一个域提出请求,但不能处理请求返回的数据;可以加载来自其它域的脚本并在自己域执行。无法读取或修改其它域的DOM或Cokkie数据。
HTTP方法用途
GET用于请求资源,POST用于提交数据。
HEAD:不在响应中返回消息主体的GET方法。因为速度很快,可以用于只检测资源是否存在。
TRACE:响应主体中返回请求消息的具体内容,可检测代理服务器。
OPTIONS:报告有效的HTTP方法
PUT:试图上传资源,如果已经存在会替换原先数据。危险方法。
DETELE:删除指定资源,危险方法。
nmap -v -A形式的端口扫描后,若扫描到使用HTTP服务的端口(不一定是80端口),会扫出能使用的HTTP方法。
FTP协议分析
ftp是文件传输协议,一般来说数据包是不加密的,从中甚至能抓到其中的用户名和密码,并非安全协议。ftp连接分为控制连接和数据连接,控制连接使用21端口,用来传输和应答命令,数据连接使用20端口或是使用控制连接商量的端口。
FTP报文分为请求(Request)和应答(Respone)。请求者是客户端即下载方,应答者是服务端即文件提供方。常见请求命令有:
SYST:请求系统类型。
USER:请求者提供用户名。
PASS:请求者提供用户名对应的密码。
PORT:请求建立数据连接
LIST:请求查询文件列表信息。
TYPE:说明文件的类型,A为Ascii形式,I为二进制形式。
RETR:请求服务端通过已建立的连接发送文件内容。
QUIT:断开连接请求
数据连接协议在wireshark显示为ftp-data协议,内容就直接是传输内容,可以使用追踪TCP流等方式获取实际文件。
攻击面:
2.工具
很多工具都在Kali Linux中有集成,其常用于渗透测试。
Burpsuite
meterpreter模块
portfwd:端口转发工具,可以将远程主机端口转发到本地内网的端口。
端口映射:外网用户无法直接访问内网主机,可以设置端口映射将远程端口映射到本地,实际上充当了反向代理的作用。
端口转发:内网以NAT形式相连,内网主机的ip地址和这个内网段公网IP路由器的端口进行了绑定,其和外网通信时,通过消息流经的IP路由器的端口,就知道传给内网内的哪台主机。
反向代理:代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端。
小型工具
Fiddler:web调试工具,可以记录浏览器和服务器之间的通信,并允许设置断点修改数据。
nmap:端口扫描工具,老朋友了,不过其中-A -v参数很有用,可以全面扫描且显示详细信息。-sS就是半开扫描,一般不会记录在对方主机系统日志中。不过现在nmap支持脚本插件,”–script=脚本名称”,可选用插件,插件在官网记录。
信息搜集工具
Google:Google搜索网站特征方式(应当有梯子):
主机发现:arp-scan是kali的工具,用于发现当前网段的主机,打印其IP,命令:
arp-scan -l
目录扫描:dirsearch可用于目录扫描,如对于http页面扫描:
dirsearch -u http://192.168.116.172:80
扫描会使用经典后缀php、html、js、apsx、jsp,但是实际使用的有可能是别的后缀,如php可能是php3、pht、phps等,可使用-e参数指定。
密文破解
Hash破解:可用hashcat工具,可设置字典破解、组合破解、掩码暴力破解等。可用于破解MD5、SHA等(通过-m参数指定)。
3.检测
Linux检测
/root/.bash_history:记录root用户执行过的历史命令,可直接用history指令打印。其它用户在自己的家目录下也会有各自的该文件,不过内容一般都会被入侵者删掉,因此最好配置一个另行备份的位置。
/etc/init.d目录:开机自启动的服务
入侵者可能会用crontab命令设置恶意定时任务。排查位置:
如果知道入侵的时间段,可用find / -iname “*” -atime 1 -type f 命令查看一天前访问的文件,可以细分时间或目录。stat命令可查看文件的创建时间和修改时间。
一些重要的日志:
/var/log/message文件,记录Linux系统绝大多数信息,首要排查。
/var/log/cron文件,是记录定时任务相关的日志。
/var/log/secure文件,记录验证和授权,涉及账号密码的都会记录。
lastlog命令查看所有用户最后登录时间
lastb命令查看错误登录的日志
last命令查看所有用户登录、注销,系统启动关机事件。
一些有用的命令:
打印爆破root账号的IP
grep "Failed password for root" /var/log/secure | awk '{print $11}' |sort | uniq -c | sort -nr | more
成功登录的IP:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的⽇期、⽤户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
我的服务器被爆破成功过一次,然后那个入侵者把所有操作和有关自己IP的日志包括爆破记录几乎都清掉了,只在/var/log/secure留下了一丁点痕迹,因此单一检测手段是不可靠的。
完整性检查,查看哪些命令被替换了:
rpm -Va > rpm.log
一般系统命令会在/bin目录,或是别的命令也可能在其它$PATH的路径,将缺失命令移回/bin目录即可。
如果有任何有错误或不够清晰的表达,欢迎邮件至 passacaglia@88.com,谢谢!