浅谈Mac上手 Asp and Asp.net 代码审计(一)

栏目: ASP.NET · 发布时间: 5年前

内容简介:Asp现在来说相对落后,也就是比较out了,但是在一些内网老系统还是经常可以看见的,Asp.net的话是我之前就打算学习的东西,因为这两个搭建起来的环境比较相似,所以把它这两者放在了这篇文章里面,这样方便查阅和学习。特别说明,本文主要是探讨mac环境如何上手 asp and asp.net审计,出发点是一个菜鸟无基础,所以一些大手子可以选择鄙视我并且x掉页面。当前环境: MAC OS 使用PD虚拟机创建了win10

浅谈Mac上手 Asp and Asp.net 代码审计(一)

0x1 前言

Asp现在来说相对落后,也就是比较out了,但是在一些内网老系统还是经常可以看见的,Asp.net的话是我之前就打算学习的东西,因为这两个搭建起来的环境比较相似,所以把它这两者放在了这篇文章里面,这样方便查阅和学习。特别说明,本文主要是探讨mac环境如何上手 asp and asp.net审计,出发点是一个菜鸟无基础,所以一些大手子可以选择鄙视我并且x掉页面。

0x2 环境搭建

当前环境: MAC OS 使用PD虚拟机创建了win10

web服务器: iis

安装过程非常简单: 控制面板-> 程序与功能->window功能

然后选择如下设置即可:

浅谈Mac上手 Asp and Asp.net 代码审计(一)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

这里我想谈下CGI和ISASPI

这里推荐两篇文章:

IIS里ISAPI扩展与ISAPI筛选器的区别和相同之处

IIS里ISAPI和CGI比较:几种执行方式的不同

其实CGI ASP JSP PHP 都是常用的动态网页技术,与这篇文章没有太大关系,但可以去适当了解下。

0x3 创建一个asp测试站点

打开iis管理器->添加网站

查看下当前IP信息(这里采用的是共享网络)

以太网适配器 以太网:

连接特定的 DNS 后缀 . . . . . . . : localdomain

IPv6 地址 . . . . . . . . . . . . : fdb2:2c26:f4e4:0:a1e9:be2b:e47:4ace

临时 IPv6 地址. . . . . . . . . . : fdb2:2c26:f4e4:0:2517:1ae1:48bd:d9bb

本地链接 IPv6 地址. . . . . . . . : fe80::a1e9:be2b:e47:4ace%3

IPv4 地址 . . . . . . . . . . . . : 10.211.55.20

子网掩码  . . . . . . . . . . . . : 255.255.255.0

默认网关. . . . . . . . . . . . . : fe80::21c:42ff:fe00:18%3

10.211.55.1

在桌面创建一个存放网站内容的文件夹C:Usersxq17Desktopasptest (PD虚拟机 Mac可以直接访问到window文件夹)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

创建一个index.asp在网站目录

<!DOCTYPE html>

<html>

<body>

<%

response.write("Hello World!")

%>

</body>

</html>

可以发现提示401访问权限错误。

HTTP 错误 401.3 – Unauthorized

由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面。

其实是文件夹权限问题,参考https://blog.csdn.net/wyz670083956/article/details/79092446配置个everyone用户即可,流程如下: 编辑权限->安全->添加->高级->立即查找->下方列出的对象选择Everyone即可。

下面操作都是在iis配置下。

我们需要设置下iis的默认文档添加个index.asp

浅谈Mac上手 Asp and Asp.net 代码审计(一)

为了调试方便,我们开启目录浏览功能

浅谈Mac上手 Asp and Asp.net 代码审计(一)

这个时候Mac访问发现失败,只需要关闭下window自带防火墙即可。

浅谈Mac上手 Asp and Asp.net 代码审计(一)

0x4 Asp代码审计初准备

代码审计最基本要求是掌握审计程序使用的语言的基本语法,这里推荐菜鸟教程 ASP教程 ,方便上手

那么检验和巩固自己学习成功的最好是手段,是尝试自己去写一个漏洞网站,熟悉下开发的流程。因为asp不是很常用,所以这里只针对高危的审计点进行说明,后面如果在渗透过程遇到有意思的aspweb程序,我会补上这个系列。

0x4.1 编写基于Access的注入点测试网站

0.开启错误提示(debug模式)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

这样能让我们快速找到代码出错的原因。

1.利用office自带 Access创建个Access数据库:

Databasename:sql.mdg

tablename: sql

Column:id username password

然后保存的时候选择mdb格式

浅谈Mac上手 Asp and Asp.net 代码审计(一)

2.编写一个sql.asp页面

代码如下:

连接数据库方式: 有时候会有权限问题,具体查看网站报错内容

conn.asp

‘ DSN-less 连接

<%

set conn=Server.CreateObject("ADODB.Connection")

conn.Provider="Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/users/xq17/desktop/asptest/sql.mdb"

%>

‘ ODAC 连接 这个需要配置下数据源 有时候不对的时候要设置下iis中的应用程序->开启32位应用程序支持

<%

set conn=Server.CreateObject("ADODB.Connection")

conn.Open "sql"

%>

sql.asp

<!--#include file="conn.asp" -->

<%

set rs=Server.CreateObject("ADODB.recordset")

sqlc="select * from admin where username='" & Request.QueryString("username") & "' and password='" & Request.QueryString("password") & "'" '漏洞点

Response.Write("SQL:" & sqlc)

rs.Open sqlc,conn,1,1

username= rs("username")

Response.AddHeader "Content-Type","text/html; charset=UTF-8"

' if username="" then

'     Response.Write("<br> 登陆失败")

' End if

if not rs.eof then

    Response.Write("<br>当前登陆的信息为:<br>")

    do until rs.EOF

      for each x in rs.Fields

            Response.Write(x.name)

            Response.Write(" = ")

            Response.Write(x.value & "<br>")

      next

      Response.Write("<br>")

      rs.MoveNext

    loop

End if

rs.close

%>

浅谈Mac上手 Asp and Asp.net 代码审计(一)

可以看到这里的直接通过Request.QueryString(“password”)获取然后拼接进入 SQL 语句,导致了注入

0x4.2 经典的双文件上传漏洞代码并且分析成因

其实我们平时遇到asp的源码,无非路子常见就只有3条

(1)越权

(2)注入

(3)上传

越权只要读下全局check_login就好了,所以这里主要分析下经典的双文件上传漏洞及其成因。

推荐一篇古老的文章: ASP上传漏洞

关于真实案例,只能等有机会再去审计一波了,asp的其实黑盒测试足矣,基本截断通杀。

程序没有filepath=replace(filepath,chr(0),””) 路径和文件名可控, 那么直接可以截断通杀

还有就是大小写的问题,过滤不言,黑名单不全等问题。

0x4.3 经典的命令执行木马

1.<%=Eval(Request(“xq17”))%>

2.<%eval request(“xq17”)%>

相应等价Eval的还有 Execute 、ExecuteGlobal(不输出结果)

审计的时候重点关注这些函数,如果参数可控直接getshell。

0x5 Aspx代码审计初准备

关于asp.net代码审计,其实最开始的思路就是要自己了解c#语言的基本语言结构,然后自己去尝试开发一个简单asp.net的项目,然后尝试逆向对比和源码的区别,从而做到心中有数。

0x5.1 IDE的选择

asp.net审计我觉得最好从一个项目的开发流程来走,快速生成项目模版和运行,所以我觉得visual studio值得选择。

所以可以选择在 win10 -> 安装visual studio社区版

这里推荐下,我是如何学习vs的使用的。

推荐这篇文章: 欢迎使用 Visual Studio IDE | C#

通过这篇文章你可以快速上手visual stdio的使用。

(1) 了解一些基础tips 转向函数定义 变量重命名 内联文档 (查阅官方高效性方面的常用功能)

(2)实战操作建立一个hello world的C#程序

(3)实战建立一个asp.net Web 项目

0x5.2 浅谈下C#的快速入门

快速入门 C# 菜鸟教程

(0) 了解注释

C#语言中包含了三种注释符

(1).单行注释   //

(2).多行注释  /*要注释的内容*/       注意:多行注释不能嵌套使用

(3).文档注释 ///     文档注释可以用来注释方法,也可以用来注释类.

(1) 了解程序最小结构

using System;  //包含System命名空间

namespace HelloWorldApplication // 空间声明

{

   class HelloWorld //类声明

   {

      static void Main(string[] args) //定义Main方法,C# 程序入口点

      {

         /* 我的第一个 C# 程序*/  //注释

         Console.WriteLine("Hello World"); //system空间下Console类的放啊放

         Console.ReadKey(); //等待按键然后结束

      }

   }

}

(2)学习顺序、选择、循环基本结构

(3)了解下异常处理

try

{

    //自己的代码

}

catch(ExceptionName e1)

{

    //    错误处理代码

}

catch(ExceptionName e2)

{

    //    错误处理代码

}

finally

{

    //要执行的语句

}

这些知识,可以让你基本读懂代码,后面就可以采取通过不断阅读各种代码的学习方式,加深对其他内容的学习。

0x5.3 尝试去建立一个hello world c# 程序

浅谈Mac上手 Asp and Asp.net 代码审计(一)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

查看解决方案管理器,可以看到项目文件的构成。

浅谈Mac上手 Asp and Asp.net 代码审计(一)

可以看到执行成功,然后查看下目录生成的内容,对比进行了解一些编译连接过程产生的文件。

浅谈Mac上手 Asp and Asp.net 代码审计(一)

Main函数代码主要是如下(模版)

using System;



namespace HelloWorld

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("Hello World!");

        }

    }

}

0x5.4 建立一个asp.net Web 项目

参考链接: 创建web应用

后面深入学习的话尝试两种经典的设计模式MVC and Razor:

web应用设计

这里先直接介绍下流程

项目创建->项目部署->反编译查看

0x5.4.1 (1)项目创建

这里的解决方案模版是基于 Razor 页面设计模式,也是MVC架构,非常方便。

浅谈Mac上手 Asp and Asp.net 代码审计(一)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

0x5.4.2 (2)项目部署

浅谈Mac上手 Asp and Asp.net 代码审计(一)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

0x5.4.3 (3)dnSpy反编译

浅谈Mac上手 Asp and Asp.net 代码审计(一)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

然后对比源码:

浅谈Mac上手 Asp and Asp.net 代码审计(一)

浅谈Mac上手 Asp and Asp.net 代码审计(一)

可以看到反编译DLL的结果其实也只是能大概了解逻辑而已,跟源码还是有一定差异的。

0x6 远程搭建调试环境思路

这里可以介绍下远程环境搭建思路(比如在阿里云安装了windowserver 2008),如何进行本地调试?

这里我们可以采取nfs远程共享文件夹的方式,在本地电脑挂载远程服务器的网站目录

(1) 远程环境window下:

下载 hane win nfs server (ps.我自己下载的是汉化版的。逃)

然后配置下输出选项下的内容

# exports example



C:\ftp -range 192.168.1.1 192.168.1.10

c:\public -public -readonly

c:\tools -readonly 192.168.1.4

c:\users\xq17\desktop\asp\test -public -name:asptest

然后开始->搜索重启所有服务 这样就可以成功挂载 参考这个文章: Windows10配置NFS服务端和客户端

浅谈Mac上手 Asp and Asp.net 代码审计(一)

然后MAC本机对这个目录进行远程挂载。

查看挂载的目录: showmount -e 10.211.55.20

浅谈Mac上手 Asp and Asp.net 代码审计(一)

Mac进行挂载:

sudo mount -o resvport 10.211.55.20:/asptest /tmp/test

浅谈Mac上手 Asp and Asp.net 代码审计(一)

卸载的话在Finder,mac的没有unmount 命令,如果有其他命令,希望师傅能告诉下我。

浅谈Mac上手 Asp and Asp.net 代码审计(一)

(2) 远程环境 Linux 下:

1.安装nfs服务器 sudo apt install nfs-kernel-server

2.配置/etc/exports 配置文件

/tmp *(rw,sync,no_subtree_check,no_root_squash)

3.重启服务

sudo service nfs-kernel-server restart

Mac进行挂载:

sudo mount -t nfs 47.101.46.x:/tmp /tmp/test 发现失败 Operation not permitted

sudo mount -o resvport 47.101.46.x:/tmp /tmp/test

浅谈Mac上手 Asp and Asp.net 代码审计(一)

可以看到挂载成功

linux下取消挂载

sudo unmount /tmp/test

但是mac好像没有这个命令,不过我们可以选择去finder 点击卸载。

0x7 总结和反思

本文主要记录了自己在探索Asp和Asp.net审计过程的摸索和尝试,基本是0基础出发的,所以文中可能会诸多纰漏或者低级错误,欢迎师傅指出和提供相关资料让我去学习。后面我会针对Asp.net的审计进行重点学习,对具体的开发流程和反编译原理进行深一步研究,从而寻找一种高效可行的Asp.net审计方案。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

让大象飞

让大象飞

[美] 史蒂文·霍夫曼 / 周海云、陈耿宣 / 中信出版社 / 2017-3 / 69.00

这是一本为中国创业者量身定做的创业指南,将帮助创业者理解创新的基本方法、模式和硅谷的创业理念。作者霍夫曼频繁地穿梭于中美两地,与不同的创业者、投资人、政府负责人进行对话,积累了大量的来自中国创业者的第一手经验。在这本书里,从创业团队的人员配备到创业融资的成败再到团队的高效管理,从创业者的心理素质到创业者的独到眼光再到企业赖以生存的根本,360度无死角地呈现了一家公司从初创到惊艳到立足再到稳定的全过......一起来看看 《让大象飞》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具