(一)HTTP响应头和请求头
HTTP响应头:
1.Server:服务器端使用的web服务器名称
2.Cotent-type:内容类型,一般只网页中存在的content-type,用于定义网络文件的类型和网页的编码,决定文件接收方将以何种形式神秘编码读取这个文件。这就是为啥一些ASP的网页点击结果却是下载到的一个文件或一张图片
3.Set-Cookie:服务器向客户端设置的cookie
4.Last-Modified:服务端资源的最后修改时间
5.Location:重定向到另一个页面,通常配合302状态码使用
6.Content-Length:body部分的长度
7.transfer-encoding: 字面意思是传输编码.当其。取值是Chunked时表明采取了分块编码。这时,报文中的实体需要改为用一系列分块来传输。每个分块包含十六进制的长度值和数据,长度值独占一行,长度不包括它结尾的 CRLF(\r\n),也不包括分块数据结尾的 CRLF。最后一个分块长度值必须为 0,对应的分块数据没有内容,表示实体结束
8.Content-Encoding(内容编码)。通常用于对实体内容进行压缩编码,目的是优化传输,例如用 gzip 压缩文本文件,能大幅减小体积。内容编码通常是选择性的,例如 jpg / png 这类文件一般不开启,因为图片格式已经是高度压缩过的,再压一遍没什么效果不说还浪费 CPU。
HTTP请求头:
1.Cache-Control,用来表示对缓存控制,如一个请求希望相应返回的内容在客户端被缓存一段时间或不被希望缓存。如Cache-Control: max-age=3600表示对相应内容缓存3600秒。而Cache-Control: no-cache表示不要缓存
2.X-Forwarded-For:代表客户端IP,可以有多个,逗号隔开
3.Client-ip:同样代表客户端IP,但不属于标准请求头信息。若XFF被过滤则可以考虑
4.X-Real-IP:同样可以用来伪造客户端IP
5.三种获取客户端IP的方法:$_SERVER[“REMOTE_ADDR”]获取的是客户端与服务器建立三次握手时的IP,无法伪造, $_SERVER[“HTTP_CLIENT_IP”]获取的是http请求头client-ip字段信息, $_SERVER[“HTTP_XFORWARDED_FOR”]获取的是http请求头XFF的信息。后两个可以伪造
(二)信息泄露
网站的备份文件(必要的时候可以使用dirsearch扫描目录):
常见的备份文件名:web,website,backup,back,www,wwwroot,temp
常见备份文件后缀:zip,tar.gz,rar,tar
- Bak文件:
访问URL/index.php.bak下载index的源码
- Vim缓存:
开发人员线上使用vim编辑器使用过程中会留下vim编辑器缓存,当vim异常退出时缓存会一直留在服务器上,引起网站源码泄露
以index.php为例:第一次产生的缓存文件名是.index.php.swp
第二次意外退出后文件名是.index.php.swo
第三次产生的缓存文件是.index.php.swn
使用Vim编辑器还会生成index.php~
3.DS_Store:
是Mac OS保存文件夹的自定义属性的隐藏文件。通过它可以知道这个目录里边所有的文件清单。通过访问url/.DS_Store下载文件,这是个Linux文件,用windows的记事本打开是乱码.
4.GIT泄露:
在用git做项目版本控制时。一般开发者在开发环境中完成开发,会把代码push到代码托管平台中,再把git库代码pull到测试环境中进行项目测试,测试通过的代码pull到生产环境中。若配置不当可能会将.git文件夹直接部署到线上环境,引起git泄露漏洞。
Log,stash,index
5.SVN泄露:
是subversion的简称,是一个开放源码的版本控制系统,1.7及以后的版本责只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目所有的文件备份
6.Hg泄露:
Mercurial是一个分布式的版本控制系统,主程序名字是hg,所以叫hg.相比于git,hg原生支持Windows
(三)文件上传:
.htaccess文件:是Apache服务器中的一个配置文件,它负责相关目录下的网页配置,通过.htaccess文件可以实现网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
<FilesMatch "cimer">
Sethandler application/x-httpd-php
</Eilesmatch >
通过.htaccess文件,调用php的解析器解析一个文件名,只要包含"cimer"这个字符串的任意文件。这个"cimer"的内容如果是一句话木马,即可利用中国菜刀或中国蚁剑进行连接。
发送的 http包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式在windows系统里是不被允许的,所以需要在 burp之类里进行修改,然后绕过验证后,会被windows系统自动去掉后面的点和空格,但要注意Unix/Linux系统没有这个特性(以小数点或空格结尾,windows在保存这些文件时,会自动删除空格或小数点这些字符。如 .php. .php (.php后面有空格))
补充:
图片马制作:copy 1.jpg/b + 1.php/a 2.jpg
Nginx服务器默认日志路径 /var/log/nginx/access.log
短标签:有时在上传的过程中会出现php关键词过滤,这时候可以尝试一下短标签<?=?> <??>,需要short_open_tag = On。若asp_tags=On那么还支持<%%>的写法。短标签默认不开启,则无法解析类似<?phpinfo()?>这种形式的语句
(四)MySql数据库:
注释:#(单行注释)、- -(单行注释,中间有个空格)、/**/(多行注释)
MySQL安装好之后。会自动产生INFORMATION_SCHEMA(信息数据库,保存着所维护的所有其他数据库信息)、MySQL、TEST三个数据库。SCHEMATA表中保存着DBMS中所有数据库名称信息。TABLES表提供了数据库当中的表信息,COLUMNS表提供了表中的列信息
(五)SQLMAP
1.Sqlmap设置http方法:
--method.用于执行HTTP请求的方法是GET。指定参数用—data,这时请求方法被隐式指定为post
-f 指纹信息(fingerprint)
--dbs数据库
2.Sqlmap设置cookie参数:
--cookie
--cookie-del
--load-cookies可以用来提供包含Netscape/wget格式的cookie特殊文件
--drop-set-cookie
使用场景:web应用程序具有基于cookie验证的过程、想利用cookie值上的sql注入漏洞
3.若在通信过程中web应用程序使用set-cookie标头进行响应,sqlmap将在所有进一步的http请求中自动使用其值作为cookie标头。Sqlmap还将为SQL注入自动测试这些值,可以通过设置--drop-set-cookie设置
注意:使用cookie注入要设置level为2及以上
4.Sqlmap设置user-agent:
设置level 3及以上
使用sqlmap默认头可能会被检测到,可以使用—user-agent伪造。此外可以通过—random-agent将从./txt/user-agents.txt中随机选择一个用于会话中的所有http请求。一些服务器会检测用户代理,如果不是一个合法值,就会中断连接,同时sqlmap会爆出错误