ASPX的webshell权限为什么比ASP的大?

0x01 背景

dotNet安全矩阵微信群里有师傅问了一个妖娆的面试题,ASPX的webshell权限为什么比ASP的大?根据微软IIS迭代时间线大致可分为两个阶段去看这个问题。.

0x02 IIS版本间的差异

2.1 IIS7.5之前

在IIS6.0 - IIS7.5,.NET默认的账户是aspnet,隶属于Users,而此时的ASP基于IUSER账户,隶属于Guest组,对于组来说Users组的权限 > Guest组,所以能执行或者读取的资源更多。

ASPX的webshell权限为什么比ASP的大?

2.2 IIS7.5之后

IIS7.5以后到现在IIS10,.NET默认的账户是iis apppool\defaultapppool,默认身份为 ApplicationPoolIdentity

ASPX的webshell权限为什么比ASP的大?

而此账户继承了Users组和IIS_IUSRS组的成员,例如执行 whoami/groups 返回结果如图

ASPX的webshell权限为什么比ASP的大?

而ASP同样也是继承于apppool\defaultapppool,返回用户组也和.NET一致,如图
ASPX的webshell权限为什么比ASP的大?

2.3 结论

在老版本的IIS里的确ASPX的webshell权限 > ASP Webshell;新版本的IIS里只要开启了ASP的话,两者的权限一样的,但新版的IIS默认已经关闭了ASP,用进程工具做了交叉验证,的确在IIS新版权限一致,都是基于默认的应用程序池defaultapppool

ASPX的webshell权限为什么比ASP的大?