The answer is no, not without a transmitter. Luckily, there are no shortage of transmitters flying all around that can help us, using a format and frequency that we can capture with a simple SDR receiver.
The idea for this is very trivial, using the same steps as the GPS receiver on a phone. Your phone itself does not know its own location, not from its assigned IP address or via other means. Instead, it receives signals from at least three satellites in GNSS constellations. These GNSS satellite signals usually contain the satellite’s position or orbit information along with a precise timestamp. This allows a GPS receiver to compute its distance d from the satellite, and the GPS receiver lies somewhere on the circle with a radius of d centered on the satellite’s position at the provided timestamp. Receiving signals from three satellites will result in three circles which overlap at exactly one point, revealing the GPS receiver’s position.
With an SDR receiver, we can actually (conceptually) design and build our own positioning system by mimicking a GPS receiver. We will use the SDR receive to receive and decode information from stations which broadcast positioning information. But with a basic SDR receiver and antenna, satellite signals might fall outside of our frequency range. What specific stations can we listen to that meet the requirements of positioning and time?
Automatic Dependent Surveillance-Broadcast (ADS-B)

Our receiver can pick up some signals in the aeronautical band. One of such signals are Automatic Dependent Surveillance-Broadcast or ADS-B signals. We are specifically interested in ADS-B Out signals. These signals are data frames automatically broadcast by aircraft, containing aircraft identifiers, some metadata along with its heading, speed, and additional information. For our system, this is all we need: speed, heading, and GNSS coordinates. Mode-s.org/1090mhz/ has an excellent guide that explains the data format of ADS-B frames. What is relevant to know is that most modern aircraft are fitted with these ADS-B receivers. As such we can apply this positioning method if we are close to a large metropolitan area or near frequently used NAVAIDs. Modern aircraft provide us with coverage.
So we use our SDR receiver and tune it to 1090MHz to receive ADS-B frames from nearby aircraft. These frames may contain different information. The ADS-B protocol ensures that the crucial information we need for this, namely aircraft position, speed, and heading, are broadcast at specified intervals as shown in the table below (sourced from mode-s.org/1090mhz/).

The fixed rate of these transmissions is crucial, as I will explain in a moment. It is not enough that the ADS-B is sent frequently, but also regularly.
Now, when we use our SDR receiver and examine some ADS-B frames, we see the information of a few aircraft in our general area. How does this help us determine our position? We can begin by using some simple triangulation. Assuming we have at least three aircraft, we may select the three “outermost” aircraft, i.e. the three aircraft that construct a triangle containing all other aircraft either along the edges or within the interior of the triangle, and select the centre of this triangle as our preliminary guess. Aside from this being a wildly inaccurate guess, there is also no guarantee that you and your receiver lie within the triangle formed by the selected aircraft. There could be, for example, numerous aircraft to the east of the SDR receiver that are transmitting ADSB signals, but no aircraft to the west, and as such this preliminary guess will be highly inaccurate.
What can we compute in order to find an exact position? From the table above, we know that aircraft equipped with ADS-B transmit their airborne position at a rate of 2 Hz, or once every 0.5 seconds. If the aircraft remains at a fixed distance from the SDR receiver (flying in an arc, or hovering), then after each reception of an airborne position message, we can expect the next airborne position message to arrive exactly 0.5 seconds + the speed of light takes to cover the distance between aircraft and the receiver later.
However, if the aircraft is approaching the receiver, the next message will arrive in a shorter interval, as the distance has decreased. Similarly, if the aircraft is flying away from the receiver, the subsequent messages will arrive at increasingly larger intervals. From a single aircraft, this alone would give us two possible points to geo-locate our receiver. All that is needed is for another aircraft to corroborate one of the two locations. (There is an edge case: two flights flying directly opposite one another will compute the same two coordinates, and would necessitate a third aircraft on a distinct flightpath.)
Conceptually, this is possible. I intended to build a working solution, but Python does not recognize the drivers I need to use the SDR, although it seems to work for C++ SDR applications. I’ll get around to building a proof-of-concept once I figure out the driver issue. I suspect the main difficulty will be obtaining an accurate coordinate. If the aircraft are close enough for the SDR receiver to capture their broadcasts, then they may be, in aboslute terms, close enough to the receiver that the microsecond difference in transmission intervals may not show up…and although the system clock can likely measure these differences, I have yet to find out whether my receiver can.