<div dir="ltr"><div><div><div><div><div><div><div>Hi Ilyass,<br></div>the rule 960035 in the file modsecurity_crs_30_http_policy.conf, which is the one that uses the restricted_extensions variable, bases its match on the REQUEST_BASENAME, that is "the filename part of REQUEST_FILENAME" (<a href="https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#REQUEST_BASENAME">https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#REQUEST_BASENAME</a>).<br></div><br></div>File uploads are handled in the body of the POST request, and then the basename is that of the script which orchestrates the upload.<br><br></div><div></div>I would suggest you to intercept your upload request with a tool such as ZAP by OWASP, and identify the process of the uploads in your application.<br><br></div>For example, you may find a request like this:<br><br>POST <a href="http://mysite/upload.php">http://mysite/upload.php</a> HTTP/1.1<br>User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0<br>Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8<br>Accept-Language: en-US,en;q=0.5<br>Referer: <a href="http://mysite/contentadmin.php">http://mysite/contentadmin.php</a><br>Content-Length: 15748<br>Content-Type: multipart/form-data; boundary=---------------------------100259790820425171131264960<br></div>Host: mysite<br><br></div>The content-type is multipart so, in the body, there will be more than one separated by the boundary identifier. Among these, there is the one referred to a png image:<br><br>-----------------------------100259790820425171131264960
<br>Content-Disposition: form-data; name="upload"; filename="waf.png"
<br>Content-Type: image/png
<br><div><div><div><div><div><div><br></div><div>In this case you should have to write rules acting on phase 2 body content, checking the filename and content-type headers.<br><br></div><div>Hope this could be of any help for you<br><br></div><div>Paolo<br></div><div><br><div><div><div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Hi ,<br>
<br>
How can I block upload a specific file such as (.jsp/.php)<br>
I configured this rule :<br>
/etc/httpd/modsecurity-crs/base_rules/modsecurity_crs_30_http_policy.conf<br>
<br>
with this :<br>
<br>
SecAction \<br>
  "id:'900012', \<br>
                                                                      phase:1,<br>
\<br>
  t:none, \<br>
<br>
<br>
  setvar:'tx.allowed_methods=GET HEAD POST OPTIONS', \<br>
<br>
<br>
<br>
setvar:'tx.allowed_request_content_type=application/x-www-form-urlencoded|multipart/form-data|text/xml|application/xml|application/x-amf|application/json',<br>
\<br>
  setvar:'tx.allowed_http_versions=HTTP/0.9 HTTP/1.0 HTTP/1.1', \<br>
<br>
<br>
  setvar:'tx.restricted_extensions=.asa/ .jsp/ .asax/ .ascx/ .axd/ .backup/<br>
.bak/ .bat/ .cdx/ .cer/ .cfg/ .cmd/ .com/ .config/ .conf/ .cs/ .csproj/<br>
.csr/ .dat/ .db/ .dbf/ .dll/ .dos/ .htr/ .htw/ .ida/ \<br>
.idc/ .idq/ .inc/ .ini/ .key/ .licx/ .lnk/ .log/ .mdb/ .old/ .pass/ .pdb/<br>
.pol/ .printer/ .pwd/ .resources/ .resx/ .sql/ .sys/ .vb/ .vbs/ .vbproj/<br>
.vsdisco/ .webinfo/ .xsd/ .xsx/', \<br>
  setvar:'tx.restricted_headers=/Proxy-Connection/ /Lock-Token/<br>
/Content-Range/ /Translate/ /via/ /if/', \<br>
<br>
  nolog, \<br>
<br>
<br>
  pass<br>
<br>
<br>
?But it's don't stop upload .jsp file.<br>
<br>
Have you any idea ?<br>
<br>
Thank you?</blockquote></div></div></div></div></div></div></div></div></div></div></div>