zero1234
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

前言
自己本身是一个学习两年网络安全的小白师傅,想想两年来都没有系统的学习过,所以就想着看看小迪的课程,顺便将自己的理解与小迪的课程做一个结合,以文字+图片的形式呈现给大家。看了小迪的课程,真觉得小迪的课程是yyds!-- 我看的是2024年的视频
学习内容
【基础入门】第10天:HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断
学习地址:【小迪安全】全栈网络安全 | 渗透测试 | 高级红蓝对抗 V2024最新版 (完)_哔哩哔哩_bilibili
学习目录
正式开始
知识点一:HTTP数据包
我们常说的中间人攻击,就是下图,它其实就是一个很简单的东西。例如我们前面课程学的抓包软件,我们抓到的数据包,对这个数据包进行修改,就完成了一次攻击人的攻击。例如:浏览器点击一个功能点->BP工具拦截到了这个数据包->BP工具对这个数据包进行修改->发送到我们的电脑(服务器)->我们的电脑(服务器)发送到BP工具->BP工具发送给浏览器。就完成了一个中间人攻击~
那么我们最常见的数据包有:GET数据包、POST数据包,这两个数据包有什么区别呢?最简单的区别在于他们发生的位置吧。GET数据包在我们访问页面的时候,例如:点击功能点、点击不同的页面等,而POST数据包在我们提交数据的时候,例如:头像上传、密码修改、登录等。
如何捕获这些数据包呢?1.用浏览器自带的流量捕捉 2.使用流量拦截工具进行捕捉
浏览器自带的流量捕捉,可以打开浏览器,点击F12
想设置控制台在下边的师傅可以这样设置
当我们搜索python的时候,可以看到这里有各种各样的数据包,这就是我们搜索这一个功能产生的各种数据包。
可以看到我们搜索使用的是GET请求
GET请求的第二个特征也出现了,可以看到我们的URL上,有许多的参数:q=、qs=呀,这就是GET请求的第二特征,请求的参数在URL上,就是我们可以看到,具体使用了什么参数。
诶有的师傅就疑惑了,GET请求不是不能传参吗?这是网上错误的说法,最准确的说法应该是GET请求不能传较大数据的参数,也就是较多的参数,也就是说它可以传参~
当然,可能有小白师傅问这么多种数据包我怎么知道哪个数据包是GET,哪个数据包是啥啥的、这些不用担心以后会讲,这里先明白什么是GET请求即可。
这里我们使用BP工具进行示范,不懂如何使用BP工具的可以查看第六天课程
举例:
可以看到,单单访问域名,是GET请求且没带参数
我们带上参数,那么也会在工具中体现。
POST请求
看出区别了吗?区别很简单,在正文部分是否有参数即可分辨是不是POST请求了。POST请求的第二特征,数据包中的正文带参数~
这是一些对POST与GET请求的总结,其他的请求可以暂时不用管
请求头信息是哪些呢?我们可以稍稍了解一下常见的
总结:
该知识点让我们了解数据包的基础构成,请求头+正文部分。还让我们区分了我们渗透测试当中最常见的GET请求与POST请求,在安全性上来说POST请求的安全性是较高一些的,当然通过这节课的学习,其实POST请求的参数部分我们也可以通过工具进行捕获、修改,所以在安全性上并无区别。GET与POST请求的区别,只需要记住传输数据大小有区别,参数是否在URL上有区别。值得注意的是POST请求与GET请求是可以同时存在的(当然这样并不严谨,但这样理解会更加简单),就是URL上有参数、而正文部分也有参数、这就是我们说的POST请求与GET请求同时存在。
知识点二:手机的数据包与电脑的数据包的区别
不会抓模拟器的数据包与PC端的数据包,可以参考第六天文章
手机的百度页面明显与PC的页面不同,那么它们是通过什么判断的呢?答案:User-Agent头
手机数据包,Android
电脑数据包,Windows
可以看到User-Agent头就是主要的区别
用浏览器能看到手机端的界面吗?答案:可以
只需要改成:
可以看到请求的地址是一样的,我们将这整个请求包替换成手机端的请求包
回显的页面就是手机端的了
总结:
手机端与电脑端的数据包是有区别,而区别往往是由我们的请求包来决定的,请求包当中一般(记住是一般)情况下,是有鉴别手机端和电脑端的字段,当我们对它们进行修改,那么就可以实现电脑端看到手机端的页面。以上,就是手机端和电脑端的区别了。
该技术的常用点在于我们想在电脑的浏览器上复现APP测试出的漏洞。
知识点三:什么是Cookie?
Cookie简单来说就是一种身份验证的令牌,相当于我们生活的门禁卡。只有正确的门禁卡(注意:是正确的门禁卡),我们才能进到正确的屋子里。
当我们有门禁卡的时候才能进门,网站有Cookie的时候才能访问对应账号的内容,对应的权限
例如我们现在没有正确的Cookie
我们讲登录前与登录后的数据包都进行捕获,然后做一个对比。
有正确Cookie的请求包就能正常访问路径了
总结:
Cookie的作用在测试中是至关重要的,当只有我们使用正确的Cookie才能正确的访问网站上的功能点,也就是我们需要先登录再测试,当我们使用渗透工具的时候也应该设置好对应的Cookie,否则渗透工具连门都进不去,又谈何寻找漏洞呢?如果我们获取了管理员的Cookie,那么我们是不是就有了管理员的权限,这就是Cookie作用。
知识点四:状态码是什么?如何通过状态码去判断是否存在?
小迪这里不全,我用我自己的笔记来给大家整理,当然这些只需要了解,我们真正要学习的并没有这么多~
【1XX】
这类状态码表示临时的响应。客服端在收到常规响应之前,应准备接收一个或多个1xx响应
100:继续
101:切换协议
【2xx】
这类状态码表示服务器成功地接受了客服端请求。
200:确定,表示客服端请求已成功
201:已创建
202:已接收
203:非权威性信息
204:无内容
205:充值内容
206:部分内容。表明已部分下载了一个文件,可以续传损坏的下载或者将下载拆分为多个并发的流。
207:多状态(WebDAV)。此消息之前应该还有一条XML消息,其中可能包含几个单独的响应代码,具体取决于发出了多少个子请求。
【3xx】
客服端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同页面,或通过代理服务器重复该请求。
301:已永久移动。此请求和之后所有的请求都应该转到制定的URL
302:对象已移动。对于基于表单的身份验证,此消息通常表示为“对象已移动”。请求的资源临时驻留在不同的URI。由于重定向有时可能会改变,客户端将来在请求时应该继续使用 RequestURI。
只有在 CacheControl 或 Expires 标题字段中指示,此响应才能够缓存。
304:未修改。客户端请求的文档已在其缓存中,文档自缓存以来尚未被修改过。客户端使用文档的缓存副本,而不从服务器下载文档。
307:临时重定向。
【4xx】
以4开头的状态码表示客户端出现问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。
400:错误的请求
401:访问被拒绝。IIS 定义了几个不同的401错误,用于指示更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显示。
403:服务器拒绝请求。可以理解为没有权限访问此网站,服务器能够收到请求但拒绝提供服务。IIS 定义了几个不同的403错误,用于指示更为具体的错误原因。
404:服务器找不到请求的网页。例如,访问网站中不存在的页面,或者原有页面被移走或删除,则可能会出现该状态码。IIS 定义了几个不同的404错误,用于指示更为具体的错误原因。
405:用来访问本页面的 HTTP 谓词不被允许(方法不被允许)。当客户端向运行 IIS 的服务器发送一个 HTTP 请求,并且该请求包含服务器无法识别的 HTTP 动词时,就会发生此错误。
若要解决此问题,请确保客户端的请求使用与 HTTP rfc 兼容的 HTTP 动词。
406:客户端浏览器不接受所请求页面的 MIME 类型
407:要求进行代理身份验证
412:前提条件失败
413:请求实体太大
414:请求URI太长
415:不支持的媒体类型
416:无法满足请求的范围
417:执行失败
423:锁定的错误
【401】
401.1:用户名或密码无效导致登陆失败
401.2:服务器配置导致登陆失败
401.3:由于 ACL 对资源的限制而未获得授权。表示存在 NTFS 权限问题。即使您对试图访问的文件具备相应的权限,也可能发生此错误。
例如,如果 IUSR 帐户无权访问 C:WinntSystem32Inetsrv 目录,您会看到这个错误。
401.4:筛选器授权失败
401.5:ISAPI/CGI 应用程序授权失败
401.7:由 Web 服务器上的 URL 验证策略拒绝访问。这个错误代码为 IIS 6.0 所专用。
【403】
403.1:执行访问被禁止。
可能原因:您没有足够的执行许可。例如,如果试图访问的 ASP 页所在的目录权限设为 “无”,或者,试图执行的 CGI 脚本所在的目录权限为 “只允许脚本”,将出现此错误消息。
您没有将试图执行的文件类型的脚本映射设置为识别所使用的谓词(例如,GET 或 POST)。
403.2:读访问被禁止。验证是否已将 IIS 设置为允许对目录进行读访问。另外,如果您正在使用默认文件,请验证该文件是否存在。
403.3:写访问被禁止。验证 IIS 权限和 NTFS 权限是否已设置以便向该目录授予写访问权。
403.4:要求 SSL。禁用要求安全通道选项,或使用 HTTPS 代替 HTTP 来访问该页面。
403.5:要求 SSL 128。禁用要求128位加密选项,或使用支持128位加密的浏览器以查看该页面。
403.6:IP 地址被拒绝。您已经将服务器配置为拒绝访问您当前的 IP 地址。
403.7:要求客户端证书。您已经将服务器配置为要求提供证书进行客户端身份验证,但是您没有安装有效的客户端证书。
403.8:站点访问被拒绝。您已经为用来访问服务器的域设置了域名限制。
403.9:用户数过多。与该服务器连接的用户数量超过了您设置的连接限制。注意:Microsoft Windows 2000 Professional 和 Windows XP Professional 自动设置了在 IIS 上最多10个连接的限制。您无法更改此限制。
403.10:配置无效
403.11:密码更改
403.12:拒绝访问映射表。您要访问的页面要求提供客户端证书。但是,映射到该客户端证书的用户 ID 已经拒绝访问该文件。
403.13:客户端证书被吊销
403.14:拒绝目录列表
403.15:超出客户端访问许可
403.16:客户端证书不受信任或无效
403.17:客户端证书已过期或尚未生效
403.18:在当前的应用程序池中不能执行锁清秋的URL。这个错误代码为 IIS 6.0 所专用。
403.19:不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。
403.20:Passport 登录失败。这个错误代码为 IIS 6.0 所专用。
【404】
404.0:没有找到文件或目录
404.1:无法通过请求的端口访问网站。此错误消息表明,试图访问的网站的 IP 地址不接受来自此请求所用端口的请求。
404.2:Web 服务扩展锁定策略阻止本请求。在 IIS 6.0 中,表示 Web 服务扩展列表中已经阻止了该请求。
404.3:MIME 映射策略阻止了此请求。 如果存在下列情况,将出现此问题:
· 未配置请求的文件扩展名的处理程序映射。
· 没有为网站或应用程序配置相应的 MIME 类型。
【5xx】
服务器由于遇到错误而不能完成该请求。
500:内部服务器错误。很多服务器端错误都可能导致此错误消息。
事件查看器日志包含更详细的错误原因。此外,您可以禁用友好 HTTP 错误消息以便收到详细的错误说明。IIS 定义了几个不同的500错误,用于指示更为具体的错误原因。
501:页眉指定了未实现的配置
502:Web 服务器作为网关或代理服务器时,从上游服务器收到了无效响应。此类错误一般与服务器本身有关(与请求无关)。IIS 定义了几个不同的502错误,用于指示更为具体的错误原因。
503:目前服务器无法使用,一般是因为服务器超载或停止维护
504:网关超时
505:HTTP版本不受支持
【500状态码】
500.12:应用程序正忙于在 Web 服务器上重新启动。这表示您在 IIS 重新启动应用程序的过程中试图加载 ASP 页。
刷新页面后,此消息即会消失。如果刷新页面后,此消息再次出现,可能是防病毒软件正在扫描 Global.asa 文件。
500.13:web服务器繁忙
500.15:不允许直接请求 Global.asa
500.16:UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。
500.18:无法打开 URL 授权存储库。这个错误代码为 IIS 6.0 所专用。
500.19:此文件的数据在元数据库中配置不正确。如果 XML 元数据库在您尝试访问的内容类型中包含无效的配置信息,您就会收到此错误。要解决此问题,请删除或更正无效的配置。此问题通常表示 ScriptMap 元数据库键中存在问题。
500.100:内部 ASP 错误。 如果试图加载的 ASP 页中含有错误代码,将出现此错误消息。若要获得更确切的错误消息,请禁用友好 HTTP 错误消息。默认情况下,只会在默认网站上启用此错误消息。
首先是404状态码
404状态码的意思是,找不到该资源,顾名思义,就是这个网站没有这个文件、没有这个文件目录~
200状态码
成功访问到这个资源,有这个文件或这个目录
有人就会很奇怪,这个明明没有指定文件,为什么也访问为200,很简单因为网站的设置是如果没有指定文件则默认访问index.php文件,这个配置怎么设置呢?小皮举例:
像这里,当我们访问一个目录的时候,例如:/admin/,那么网站会自动寻找
/admin/index.php、/admin/index.html,如果没有才返回404,如果有就返回200
说明200状态码表示存在该网页
403状态码
表示没有权限访问该文件、目录(文件夹),那么说明什么,这也说明了该文件、目录存在。只是你没有权限而已。
值得注意的是:
一、403状态码不一定表示的是该目录没有权限,它可能是表示该文件没有权限。为什么?原因就和上面设置的网站首页有关,例如:/admin/,它会自动寻找/admin/index.php,找到了,但你没有权限所以是403。那这能证明/admin/666.php你没有权限吗?不能。所以遇到403状态码的时候可以进行fuzz测试。
二、/admin/如果返回了403,能表示/admin/test/目录会返回403吗?答案是不能,所以不仅可以对同一目录下进行fuzz测试,还进行目录fuzz。
还有一些其他的状态码的总结
总结:
200、403可以确定目标文件、目录(文件夹)存在,500、302可能目标文件、目录存在,200文件、目录存在。也就说说,我们使用工具探测的时候,只需要记录200、403、500、302这四个状态码即可。其他的就用处不大。
知识点五:如何利用工具探测目录?
这里推荐初学者使用的工具, 首先BP有自带爆破的模块
记得要将编码给关闭,然后点击启动
可以看到,我们会自动将路径拼接上去,那么我们就可以选一个好的字典进行爆破了。
首先这里需要说明的是,我们平时挖掘SRC是不允许高线程、高并发的去爆破人家的SRC的网站的,这里面是有纠纷的,所以使用的时候一定要小心谨慎。有授权另说。
下一个就是御剑
这种就颇为傻瓜式,内置有字典,然后输入域名就可以测试了。
总结:
扫描工具的使用没有太多要说的,只有一点,要授权才可以使用,这也是我们往后渗透测试最重要的一点。这也就是我们常说的目录爆破。
知识点六:密码爆破&加密如何爆破&如何正确利用数据包
这里我们就以DVWA靶场为例:
首先正确账号密码是admin与admin。
我们先输入账号admin与123456
传入代码的数据包为
查看回显是302,并未登录成功
那么我们如何爆破它的密码呢?注意,这里我们是能确定靶场的账号是admin,单单爆破密码
导入我们的字典,注意我们的格式应该是每行一个密码。
可以看到密码是就填充在数据包中了。
那么我们如何爆破使用加密的密码呢?BP中也有自带的功能,当然其他工具也有类似的功能
我们这里选择MD5加密,然后再看看它是怎么爆破的
解密一下这个MD5,确实是44444的加密结果~
总结:
密码爆破是一门学问,当我们想使用密码爆破前需要满足两个条件。确定一个用户名、知道密码字段的加密形式正确的发包。当然,这只是最基础的条件。我们实际测试过程中还需要更多的测试~
知识点七:数据包如何配合工具使用?
比如说sqlmap这个工具
为什么呢?还记得前面那个cookie吗?cookie的作用就是进门,请求包中有许许多多这样的字段,可能不只是cookie。
所以我们如果使用漏扫工具的时候需要指定一个你请求的数据包,能让你漏扫的成功率,怎么做:
复制数据包
粘贴到一个1.txt文件里
即可使用了,是不是很简单~
关于数据包的自定义测试使用,还可以使用此工具。这个工具的主要作用呢,就是可以快速的构造一个数据包,可以自定义内容、数据包头等功能~
总结:
当我们爆破密码、漏洞扫描的时候,都应该使用正确的数据包~
大总结
本节课主要的内容就是理解数据包,让我们能看懂数据包。只有当我们看懂了数据包才能进行渗透测试嘛~
最后祝大家天天开心、快快乐乐~
免责声明
本文所包含的内容仅用于教育和研究目的,旨在提高信息安全意识,帮助用户了解网络安全防护的重要性。
文章中提及的任何渗透测试技巧、工具或方法,仅供合法授权的安全研究和测试使用。在进行任何渗透测试或安全测试之前,请确保您已获得相关系统或网络所有者的明确授权。
本文作者不对任何因使用文章内容而导致的非法活动、损害或其他不良后果承担任何责任。读者在实施任何技术之前应确保遵守所有适用的法律法规。
本文内容不支持或鼓励任何形式的恶意攻击、未授权的入侵或网络犯罪。
本文内容仅限于教育用途,不得以任何方式用于未经授权的网络安全攻击或破坏行为。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
